| .. | .. |
|---|
| 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 | } |
|---|