.. | .. |
---|
4 | 4 | * beginning |
---|
5 | 5 | */ |
---|
6 | 6 | |
---|
7 | | -#include <perf.h> |
---|
8 | 7 | #include <evlist.h> |
---|
9 | 8 | #include <sys/prctl.h> |
---|
| 9 | +#include "record.h" |
---|
10 | 10 | #include "tests.h" |
---|
11 | 11 | #include "debug.h" |
---|
| 12 | +#include "parse-events.h" |
---|
| 13 | +#include "util/mmap.h" |
---|
12 | 14 | #include <errno.h> |
---|
| 15 | +#include <linux/string.h> |
---|
| 16 | +#include <perf/mmap.h> |
---|
13 | 17 | |
---|
14 | 18 | #define NR_ITERS 111 |
---|
15 | 19 | |
---|
.. | .. |
---|
18 | 22 | int i; |
---|
19 | 23 | |
---|
20 | 24 | for (i = 0; i < NR_ITERS; i++) { |
---|
21 | | - char proc_name[10]; |
---|
| 25 | + char proc_name[15]; |
---|
22 | 26 | |
---|
23 | 27 | snprintf(proc_name, sizeof(proc_name), "p:%d\n", i); |
---|
24 | 28 | prctl(PR_SET_NAME, proc_name); |
---|
25 | 29 | } |
---|
26 | 30 | } |
---|
27 | 31 | |
---|
28 | | -static int count_samples(struct perf_evlist *evlist, int *sample_count, |
---|
| 32 | +static int count_samples(struct evlist *evlist, int *sample_count, |
---|
29 | 33 | int *comm_count) |
---|
30 | 34 | { |
---|
31 | 35 | int i; |
---|
32 | 36 | |
---|
33 | | - for (i = 0; i < evlist->nr_mmaps; i++) { |
---|
34 | | - struct perf_mmap *map = &evlist->overwrite_mmap[i]; |
---|
| 37 | + for (i = 0; i < evlist->core.nr_mmaps; i++) { |
---|
| 38 | + struct mmap *map = &evlist->overwrite_mmap[i]; |
---|
35 | 39 | union perf_event *event; |
---|
36 | 40 | |
---|
37 | | - perf_mmap__read_init(map); |
---|
38 | | - while ((event = perf_mmap__read_event(map)) != NULL) { |
---|
| 41 | + perf_mmap__read_init(&map->core); |
---|
| 42 | + while ((event = perf_mmap__read_event(&map->core)) != NULL) { |
---|
39 | 43 | const u32 type = event->header.type; |
---|
40 | 44 | |
---|
41 | 45 | switch (type) { |
---|
.. | .. |
---|
50 | 54 | return TEST_FAIL; |
---|
51 | 55 | } |
---|
52 | 56 | } |
---|
53 | | - perf_mmap__read_done(map); |
---|
| 57 | + perf_mmap__read_done(&map->core); |
---|
54 | 58 | } |
---|
55 | 59 | return TEST_OK; |
---|
56 | 60 | } |
---|
57 | 61 | |
---|
58 | | -static int do_test(struct perf_evlist *evlist, int mmap_pages, |
---|
| 62 | +static int do_test(struct evlist *evlist, int mmap_pages, |
---|
59 | 63 | int *sample_count, int *comm_count) |
---|
60 | 64 | { |
---|
61 | 65 | int err; |
---|
62 | 66 | char sbuf[STRERR_BUFSIZE]; |
---|
63 | 67 | |
---|
64 | | - err = perf_evlist__mmap(evlist, mmap_pages); |
---|
| 68 | + err = evlist__mmap(evlist, mmap_pages); |
---|
65 | 69 | if (err < 0) { |
---|
66 | | - pr_debug("perf_evlist__mmap: %s\n", |
---|
| 70 | + pr_debug("evlist__mmap: %s\n", |
---|
67 | 71 | str_error_r(errno, sbuf, sizeof(sbuf))); |
---|
68 | 72 | return TEST_FAIL; |
---|
69 | 73 | } |
---|
70 | 74 | |
---|
71 | | - perf_evlist__enable(evlist); |
---|
| 75 | + evlist__enable(evlist); |
---|
72 | 76 | testcase(); |
---|
73 | | - perf_evlist__disable(evlist); |
---|
| 77 | + evlist__disable(evlist); |
---|
74 | 78 | |
---|
75 | 79 | err = count_samples(evlist, sample_count, comm_count); |
---|
76 | | - perf_evlist__munmap(evlist); |
---|
| 80 | + evlist__munmap(evlist); |
---|
77 | 81 | return err; |
---|
78 | 82 | } |
---|
79 | 83 | |
---|
.. | .. |
---|
82 | 86 | { |
---|
83 | 87 | int ret = TEST_SKIP, err, sample_count = 0, comm_count = 0; |
---|
84 | 88 | char pid[16], sbuf[STRERR_BUFSIZE]; |
---|
85 | | - struct perf_evlist *evlist; |
---|
86 | | - struct perf_evsel *evsel __maybe_unused; |
---|
| 89 | + struct evlist *evlist; |
---|
| 90 | + struct evsel *evsel __maybe_unused; |
---|
87 | 91 | struct parse_events_error parse_error; |
---|
88 | 92 | struct record_opts opts = { |
---|
89 | 93 | .target = { |
---|
.. | .. |
---|
99 | 103 | pid[sizeof(pid) - 1] = '\0'; |
---|
100 | 104 | opts.target.tid = opts.target.pid = pid; |
---|
101 | 105 | |
---|
102 | | - evlist = perf_evlist__new(); |
---|
| 106 | + evlist = evlist__new(); |
---|
103 | 107 | if (!evlist) { |
---|
104 | 108 | pr_debug("Not enough memory to create evlist\n"); |
---|
105 | 109 | return TEST_FAIL; |
---|
.. | .. |
---|
125 | 129 | |
---|
126 | 130 | perf_evlist__config(evlist, &opts, NULL); |
---|
127 | 131 | |
---|
128 | | - err = perf_evlist__open(evlist); |
---|
| 132 | + err = evlist__open(evlist); |
---|
129 | 133 | if (err < 0) { |
---|
130 | 134 | pr_debug("perf_evlist__open: %s\n", |
---|
131 | 135 | str_error_r(errno, sbuf, sizeof(sbuf))); |
---|
.. | .. |
---|
144 | 148 | goto out_delete_evlist; |
---|
145 | 149 | } |
---|
146 | 150 | |
---|
| 151 | + evlist__close(evlist); |
---|
| 152 | + |
---|
| 153 | + err = evlist__open(evlist); |
---|
| 154 | + if (err < 0) { |
---|
| 155 | + pr_debug("perf_evlist__open: %s\n", |
---|
| 156 | + str_error_r(errno, sbuf, sizeof(sbuf))); |
---|
| 157 | + goto out_delete_evlist; |
---|
| 158 | + } |
---|
| 159 | + |
---|
147 | 160 | err = do_test(evlist, 1, &sample_count, &comm_count); |
---|
148 | 161 | if (err != TEST_OK) |
---|
149 | 162 | goto out_delete_evlist; |
---|
150 | 163 | |
---|
151 | 164 | ret = TEST_OK; |
---|
152 | 165 | out_delete_evlist: |
---|
153 | | - perf_evlist__delete(evlist); |
---|
| 166 | + evlist__delete(evlist); |
---|
154 | 167 | return ret; |
---|
155 | 168 | } |
---|