.. | .. |
---|
3 | 3 | #include <inttypes.h> |
---|
4 | 4 | /* For the CLR_() macros */ |
---|
5 | 5 | #include <pthread.h> |
---|
| 6 | +#include <stdlib.h> |
---|
| 7 | +#include <perf/cpumap.h> |
---|
6 | 8 | |
---|
| 9 | +#include "debug.h" |
---|
7 | 10 | #include "evlist.h" |
---|
8 | 11 | #include "evsel.h" |
---|
9 | 12 | #include "thread_map.h" |
---|
10 | | -#include "cpumap.h" |
---|
11 | 13 | #include "tests.h" |
---|
| 14 | +#include "util/mmap.h" |
---|
12 | 15 | #include <linux/err.h> |
---|
13 | 16 | #include <linux/kernel.h> |
---|
| 17 | +#include <linux/string.h> |
---|
| 18 | +#include <perf/evlist.h> |
---|
| 19 | +#include <perf/mmap.h> |
---|
14 | 20 | |
---|
15 | 21 | /* |
---|
16 | 22 | * This test will generate random numbers of calls to some getpid syscalls, |
---|
.. | .. |
---|
27 | 33 | { |
---|
28 | 34 | int err = -1; |
---|
29 | 35 | union perf_event *event; |
---|
30 | | - struct thread_map *threads; |
---|
31 | | - struct cpu_map *cpus; |
---|
32 | | - struct perf_evlist *evlist; |
---|
| 36 | + struct perf_thread_map *threads; |
---|
| 37 | + struct perf_cpu_map *cpus; |
---|
| 38 | + struct evlist *evlist; |
---|
33 | 39 | cpu_set_t cpu_set; |
---|
34 | 40 | const char *syscall_names[] = { "getsid", "getppid", "getpgid", }; |
---|
35 | 41 | pid_t (*syscalls[])(void) = { (void *)getsid, getppid, (void*)getpgid }; |
---|
36 | 42 | #define nsyscalls ARRAY_SIZE(syscall_names) |
---|
37 | 43 | unsigned int nr_events[nsyscalls], |
---|
38 | 44 | expected_nr_events[nsyscalls], i, j; |
---|
39 | | - struct perf_evsel *evsels[nsyscalls], *evsel; |
---|
| 45 | + struct evsel *evsels[nsyscalls], *evsel; |
---|
40 | 46 | char sbuf[STRERR_BUFSIZE]; |
---|
41 | | - struct perf_mmap *md; |
---|
| 47 | + struct mmap *md; |
---|
42 | 48 | |
---|
43 | 49 | threads = thread_map__new(-1, getpid(), UINT_MAX); |
---|
44 | 50 | if (threads == NULL) { |
---|
.. | .. |
---|
46 | 52 | return -1; |
---|
47 | 53 | } |
---|
48 | 54 | |
---|
49 | | - cpus = cpu_map__new(NULL); |
---|
| 55 | + cpus = perf_cpu_map__new(NULL); |
---|
50 | 56 | if (cpus == NULL) { |
---|
51 | | - pr_debug("cpu_map__new\n"); |
---|
| 57 | + pr_debug("perf_cpu_map__new\n"); |
---|
52 | 58 | goto out_free_threads; |
---|
53 | 59 | } |
---|
54 | 60 | |
---|
.. | .. |
---|
61 | 67 | goto out_free_cpus; |
---|
62 | 68 | } |
---|
63 | 69 | |
---|
64 | | - evlist = perf_evlist__new(); |
---|
| 70 | + evlist = evlist__new(); |
---|
65 | 71 | if (evlist == NULL) { |
---|
66 | 72 | pr_debug("perf_evlist__new\n"); |
---|
67 | 73 | goto out_free_cpus; |
---|
68 | 74 | } |
---|
69 | 75 | |
---|
70 | | - perf_evlist__set_maps(evlist, cpus, threads); |
---|
| 76 | + perf_evlist__set_maps(&evlist->core, cpus, threads); |
---|
71 | 77 | |
---|
72 | 78 | for (i = 0; i < nsyscalls; ++i) { |
---|
73 | 79 | char name[64]; |
---|
74 | 80 | |
---|
75 | 81 | snprintf(name, sizeof(name), "sys_enter_%s", syscall_names[i]); |
---|
76 | | - evsels[i] = perf_evsel__newtp("syscalls", name); |
---|
| 82 | + evsels[i] = evsel__newtp("syscalls", name); |
---|
77 | 83 | if (IS_ERR(evsels[i])) { |
---|
78 | | - pr_debug("perf_evsel__new(%s)\n", name); |
---|
| 84 | + pr_debug("evsel__new(%s)\n", name); |
---|
79 | 85 | goto out_delete_evlist; |
---|
80 | 86 | } |
---|
81 | 87 | |
---|
82 | | - evsels[i]->attr.wakeup_events = 1; |
---|
83 | | - perf_evsel__set_sample_id(evsels[i], false); |
---|
| 88 | + evsels[i]->core.attr.wakeup_events = 1; |
---|
| 89 | + evsel__set_sample_id(evsels[i], false); |
---|
84 | 90 | |
---|
85 | | - perf_evlist__add(evlist, evsels[i]); |
---|
| 91 | + evlist__add(evlist, evsels[i]); |
---|
86 | 92 | |
---|
87 | | - if (perf_evsel__open(evsels[i], cpus, threads) < 0) { |
---|
| 93 | + if (evsel__open(evsels[i], cpus, threads) < 0) { |
---|
88 | 94 | pr_debug("failed to open counter: %s, " |
---|
89 | 95 | "tweak /proc/sys/kernel/perf_event_paranoid?\n", |
---|
90 | 96 | str_error_r(errno, sbuf, sizeof(sbuf))); |
---|
.. | .. |
---|
95 | 101 | expected_nr_events[i] = 1 + rand() % 127; |
---|
96 | 102 | } |
---|
97 | 103 | |
---|
98 | | - if (perf_evlist__mmap(evlist, 128) < 0) { |
---|
| 104 | + if (evlist__mmap(evlist, 128) < 0) { |
---|
99 | 105 | pr_debug("failed to mmap events: %d (%s)\n", errno, |
---|
100 | 106 | str_error_r(errno, sbuf, sizeof(sbuf))); |
---|
101 | 107 | goto out_delete_evlist; |
---|
.. | .. |
---|
108 | 114 | } |
---|
109 | 115 | |
---|
110 | 116 | md = &evlist->mmap[0]; |
---|
111 | | - if (perf_mmap__read_init(md) < 0) |
---|
| 117 | + if (perf_mmap__read_init(&md->core) < 0) |
---|
112 | 118 | goto out_init; |
---|
113 | 119 | |
---|
114 | | - while ((event = perf_mmap__read_event(md)) != NULL) { |
---|
| 120 | + while ((event = perf_mmap__read_event(&md->core)) != NULL) { |
---|
115 | 121 | struct perf_sample sample; |
---|
116 | 122 | |
---|
117 | 123 | if (event->header.type != PERF_RECORD_SAMPLE) { |
---|
.. | .. |
---|
134 | 140 | goto out_delete_evlist; |
---|
135 | 141 | } |
---|
136 | 142 | nr_events[evsel->idx]++; |
---|
137 | | - perf_mmap__consume(md); |
---|
| 143 | + perf_mmap__consume(&md->core); |
---|
138 | 144 | } |
---|
139 | | - perf_mmap__read_done(md); |
---|
| 145 | + perf_mmap__read_done(&md->core); |
---|
140 | 146 | |
---|
141 | 147 | out_init: |
---|
142 | 148 | err = 0; |
---|
.. | .. |
---|
144 | 150 | if (nr_events[evsel->idx] != expected_nr_events[evsel->idx]) { |
---|
145 | 151 | pr_debug("expected %d %s events, got %d\n", |
---|
146 | 152 | expected_nr_events[evsel->idx], |
---|
147 | | - perf_evsel__name(evsel), nr_events[evsel->idx]); |
---|
| 153 | + evsel__name(evsel), nr_events[evsel->idx]); |
---|
148 | 154 | err = -1; |
---|
149 | 155 | goto out_delete_evlist; |
---|
150 | 156 | } |
---|
151 | 157 | } |
---|
152 | 158 | |
---|
153 | 159 | out_delete_evlist: |
---|
154 | | - perf_evlist__delete(evlist); |
---|
| 160 | + evlist__delete(evlist); |
---|
155 | 161 | cpus = NULL; |
---|
156 | 162 | threads = NULL; |
---|
157 | 163 | out_free_cpus: |
---|
158 | | - cpu_map__put(cpus); |
---|
| 164 | + perf_cpu_map__put(cpus); |
---|
159 | 165 | out_free_threads: |
---|
160 | | - thread_map__put(threads); |
---|
| 166 | + perf_thread_map__put(threads); |
---|
161 | 167 | return err; |
---|
162 | 168 | } |
---|