Commit | Line | Data |
---|---|---|
4e319027 | 1 | #include <traceevent/event-parse.h> |
5e24a090 JO |
2 | #include "evsel.h" |
3 | #include "tests.h" | |
84f5d36f | 4 | #include "debug.h" |
5e24a090 JO |
5 | |
6 | static int perf_evsel__test_field(struct perf_evsel *evsel, const char *name, | |
7 | int size, bool should_be_signed) | |
8 | { | |
9 | struct format_field *field = perf_evsel__field(evsel, name); | |
10 | int is_signed; | |
11 | int ret = 0; | |
12 | ||
13 | if (field == NULL) { | |
14 | pr_debug("%s: \"%s\" field not found!\n", evsel->name, name); | |
15 | return -1; | |
16 | } | |
17 | ||
18 | is_signed = !!(field->flags | FIELD_IS_SIGNED); | |
19 | if (should_be_signed && !is_signed) { | |
20 | pr_debug("%s: \"%s\" signedness(%d) is wrong, should be %d\n", | |
21 | evsel->name, name, is_signed, should_be_signed); | |
22 | ret = -1; | |
23 | } | |
24 | ||
25 | if (field->size != size) { | |
26 | pr_debug("%s: \"%s\" size (%d) should be %d!\n", | |
27 | evsel->name, name, field->size, size); | |
28 | ret = -1; | |
29 | } | |
30 | ||
31 | return ret; | |
32 | } | |
33 | ||
34 | int test__perf_evsel__tp_sched_test(void) | |
35 | { | |
ef503831 | 36 | struct perf_evsel *evsel = perf_evsel__newtp("sched", "sched_switch"); |
5e24a090 JO |
37 | int ret = 0; |
38 | ||
39 | if (evsel == NULL) { | |
40 | pr_debug("perf_evsel__new\n"); | |
41 | return -1; | |
42 | } | |
43 | ||
44 | if (perf_evsel__test_field(evsel, "prev_comm", 16, true)) | |
45 | ret = -1; | |
46 | ||
47 | if (perf_evsel__test_field(evsel, "prev_pid", 4, true)) | |
48 | ret = -1; | |
49 | ||
50 | if (perf_evsel__test_field(evsel, "prev_prio", 4, true)) | |
51 | ret = -1; | |
52 | ||
8d76e185 | 53 | if (perf_evsel__test_field(evsel, "prev_state", sizeof(long), true)) |
5e24a090 JO |
54 | ret = -1; |
55 | ||
56 | if (perf_evsel__test_field(evsel, "next_comm", 16, true)) | |
57 | ret = -1; | |
58 | ||
59 | if (perf_evsel__test_field(evsel, "next_pid", 4, true)) | |
60 | ret = -1; | |
61 | ||
62 | if (perf_evsel__test_field(evsel, "next_prio", 4, true)) | |
63 | ret = -1; | |
64 | ||
65 | perf_evsel__delete(evsel); | |
66 | ||
ef503831 | 67 | evsel = perf_evsel__newtp("sched", "sched_wakeup"); |
5e24a090 JO |
68 | |
69 | if (perf_evsel__test_field(evsel, "comm", 16, true)) | |
70 | ret = -1; | |
71 | ||
72 | if (perf_evsel__test_field(evsel, "pid", 4, true)) | |
73 | ret = -1; | |
74 | ||
75 | if (perf_evsel__test_field(evsel, "prio", 4, true)) | |
76 | ret = -1; | |
77 | ||
5e24a090 JO |
78 | if (perf_evsel__test_field(evsel, "target_cpu", 4, true)) |
79 | ret = -1; | |
80 | ||
81 | return ret; | |
82 | } |