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