| .. | .. |
|---|
| 5 | 5 | #include <stdlib.h> |
|---|
| 6 | 6 | #include <signal.h> |
|---|
| 7 | 7 | #include <sys/mman.h> |
|---|
| 8 | +#include <linux/string.h> |
|---|
| 8 | 9 | |
|---|
| 9 | 10 | #include "tests.h" |
|---|
| 11 | +#include "util/debug.h" |
|---|
| 10 | 12 | #include "util/evsel.h" |
|---|
| 11 | 13 | #include "util/evlist.h" |
|---|
| 12 | 14 | #include "util/cpumap.h" |
|---|
| 15 | +#include "util/mmap.h" |
|---|
| 13 | 16 | #include "util/thread_map.h" |
|---|
| 17 | +#include <perf/evlist.h> |
|---|
| 18 | +#include <perf/mmap.h> |
|---|
| 14 | 19 | |
|---|
| 15 | 20 | #define NR_LOOPS 10000000 |
|---|
| 16 | 21 | |
|---|
| .. | .. |
|---|
| 27 | 32 | int nr_samples = 0; |
|---|
| 28 | 33 | char sbuf[STRERR_BUFSIZE]; |
|---|
| 29 | 34 | union perf_event *event; |
|---|
| 30 | | - struct perf_evsel *evsel; |
|---|
| 31 | | - struct perf_evlist *evlist; |
|---|
| 35 | + struct evsel *evsel; |
|---|
| 36 | + struct evlist *evlist; |
|---|
| 32 | 37 | struct perf_event_attr attr = { |
|---|
| 33 | 38 | .type = PERF_TYPE_SOFTWARE, |
|---|
| 34 | 39 | .config = clock_id, |
|---|
| .. | .. |
|---|
| 37 | 42 | .disabled = 1, |
|---|
| 38 | 43 | .freq = 1, |
|---|
| 39 | 44 | }; |
|---|
| 40 | | - struct cpu_map *cpus; |
|---|
| 41 | | - struct thread_map *threads; |
|---|
| 42 | | - struct perf_mmap *md; |
|---|
| 45 | + struct perf_cpu_map *cpus; |
|---|
| 46 | + struct perf_thread_map *threads; |
|---|
| 47 | + struct mmap *md; |
|---|
| 43 | 48 | |
|---|
| 44 | 49 | attr.sample_freq = 500; |
|---|
| 45 | 50 | |
|---|
| 46 | | - evlist = perf_evlist__new(); |
|---|
| 51 | + evlist = evlist__new(); |
|---|
| 47 | 52 | if (evlist == NULL) { |
|---|
| 48 | | - pr_debug("perf_evlist__new\n"); |
|---|
| 53 | + pr_debug("evlist__new\n"); |
|---|
| 49 | 54 | return -1; |
|---|
| 50 | 55 | } |
|---|
| 51 | 56 | |
|---|
| 52 | | - evsel = perf_evsel__new(&attr); |
|---|
| 57 | + evsel = evsel__new(&attr); |
|---|
| 53 | 58 | if (evsel == NULL) { |
|---|
| 54 | | - pr_debug("perf_evsel__new\n"); |
|---|
| 59 | + pr_debug("evsel__new\n"); |
|---|
| 55 | 60 | goto out_delete_evlist; |
|---|
| 56 | 61 | } |
|---|
| 57 | | - perf_evlist__add(evlist, evsel); |
|---|
| 62 | + evlist__add(evlist, evsel); |
|---|
| 58 | 63 | |
|---|
| 59 | | - cpus = cpu_map__dummy_new(); |
|---|
| 64 | + cpus = perf_cpu_map__dummy_new(); |
|---|
| 60 | 65 | threads = thread_map__new_by_tid(getpid()); |
|---|
| 61 | 66 | if (!cpus || !threads) { |
|---|
| 62 | 67 | err = -ENOMEM; |
|---|
| .. | .. |
|---|
| 64 | 69 | goto out_free_maps; |
|---|
| 65 | 70 | } |
|---|
| 66 | 71 | |
|---|
| 67 | | - perf_evlist__set_maps(evlist, cpus, threads); |
|---|
| 72 | + perf_evlist__set_maps(&evlist->core, cpus, threads); |
|---|
| 68 | 73 | |
|---|
| 69 | 74 | cpus = NULL; |
|---|
| 70 | 75 | threads = NULL; |
|---|
| 71 | 76 | |
|---|
| 72 | | - if (perf_evlist__open(evlist)) { |
|---|
| 77 | + if (evlist__open(evlist)) { |
|---|
| 73 | 78 | const char *knob = "/proc/sys/kernel/perf_event_max_sample_rate"; |
|---|
| 74 | 79 | |
|---|
| 75 | 80 | err = -errno; |
|---|
| .. | .. |
|---|
| 79 | 84 | goto out_delete_evlist; |
|---|
| 80 | 85 | } |
|---|
| 81 | 86 | |
|---|
| 82 | | - err = perf_evlist__mmap(evlist, 128); |
|---|
| 87 | + err = evlist__mmap(evlist, 128); |
|---|
| 83 | 88 | if (err < 0) { |
|---|
| 84 | 89 | pr_debug("failed to mmap event: %d (%s)\n", errno, |
|---|
| 85 | 90 | str_error_r(errno, sbuf, sizeof(sbuf))); |
|---|
| 86 | 91 | goto out_delete_evlist; |
|---|
| 87 | 92 | } |
|---|
| 88 | 93 | |
|---|
| 89 | | - perf_evlist__enable(evlist); |
|---|
| 94 | + evlist__enable(evlist); |
|---|
| 90 | 95 | |
|---|
| 91 | 96 | /* collect samples */ |
|---|
| 92 | 97 | for (i = 0; i < NR_LOOPS; i++) |
|---|
| 93 | 98 | tmp++; |
|---|
| 94 | 99 | |
|---|
| 95 | | - perf_evlist__disable(evlist); |
|---|
| 100 | + evlist__disable(evlist); |
|---|
| 96 | 101 | |
|---|
| 97 | 102 | md = &evlist->mmap[0]; |
|---|
| 98 | | - if (perf_mmap__read_init(md) < 0) |
|---|
| 103 | + if (perf_mmap__read_init(&md->core) < 0) |
|---|
| 99 | 104 | goto out_init; |
|---|
| 100 | 105 | |
|---|
| 101 | | - while ((event = perf_mmap__read_event(md)) != NULL) { |
|---|
| 106 | + while ((event = perf_mmap__read_event(&md->core)) != NULL) { |
|---|
| 102 | 107 | struct perf_sample sample; |
|---|
| 103 | 108 | |
|---|
| 104 | 109 | if (event->header.type != PERF_RECORD_SAMPLE) |
|---|
| .. | .. |
|---|
| 113 | 118 | total_periods += sample.period; |
|---|
| 114 | 119 | nr_samples++; |
|---|
| 115 | 120 | next_event: |
|---|
| 116 | | - perf_mmap__consume(md); |
|---|
| 121 | + perf_mmap__consume(&md->core); |
|---|
| 117 | 122 | } |
|---|
| 118 | | - perf_mmap__read_done(md); |
|---|
| 123 | + perf_mmap__read_done(&md->core); |
|---|
| 119 | 124 | |
|---|
| 120 | 125 | out_init: |
|---|
| 121 | 126 | if ((u64) nr_samples == total_periods) { |
|---|
| .. | .. |
|---|
| 125 | 130 | } |
|---|
| 126 | 131 | |
|---|
| 127 | 132 | out_free_maps: |
|---|
| 128 | | - cpu_map__put(cpus); |
|---|
| 129 | | - thread_map__put(threads); |
|---|
| 133 | + perf_cpu_map__put(cpus); |
|---|
| 134 | + perf_thread_map__put(threads); |
|---|
| 130 | 135 | out_delete_evlist: |
|---|
| 131 | | - perf_evlist__delete(evlist); |
|---|
| 136 | + evlist__delete(evlist); |
|---|
| 132 | 137 | return err; |
|---|
| 133 | 138 | } |
|---|
| 134 | 139 | |
|---|