hc
2024-02-19 151fecfb72a0d602dfe79790602ef64b4e241574
kernel/tools/perf/util/python.c
....@@ -4,14 +4,22 @@
44 #include <inttypes.h>
55 #include <poll.h>
66 #include <linux/err.h>
7
+#include <perf/cpumap.h>
8
+#include <traceevent/event-parse.h>
9
+#include <perf/mmap.h>
710 #include "evlist.h"
811 #include "callchain.h"
912 #include "evsel.h"
1013 #include "event.h"
11
-#include "cpumap.h"
1214 #include "print_binary.h"
1315 #include "thread_map.h"
16
+#include "trace-event.h"
1417 #include "mmap.h"
18
+#include "stat.h"
19
+#include "metricgroup.h"
20
+#include "util/env.h"
21
+#include <internal/lib.h>
22
+#include "util.h"
1523
1624 #if PY_MAJOR_VERSION < 3
1725 #define _PyUnicode_FromString(arg) \
....@@ -50,10 +58,35 @@
5058 }
5159
5260 /*
61
+ * Add this one here not to drag util/env.c
62
+ */
63
+struct perf_env perf_env;
64
+
65
+/*
66
+ * Add this one here not to drag util/stat-shadow.c
67
+ */
68
+void perf_stat__collect_metric_expr(struct evlist *evsel_list)
69
+{
70
+}
71
+
72
+/*
73
+ * Add this one here not to drag util/metricgroup.c
74
+ */
75
+int metricgroup__copy_metric_events(struct evlist *evlist, struct cgroup *cgrp,
76
+ struct rblist *new_metric_events,
77
+ struct rblist *old_metric_events)
78
+{
79
+ return 0;
80
+}
81
+
82
+/*
5383 * Support debug printing even though util/debug.c is not linked. That means
5484 * implementing 'verbose' and 'eprintf'.
5585 */
5686 int verbose;
87
+int debug_peo_args;
88
+
89
+int eprintf(int level, int var, const char *fmt, ...);
5790
5891 int eprintf(int level, int var, const char *fmt, ...)
5992 {
....@@ -92,7 +125,7 @@
92125
93126 struct pyrf_event {
94127 PyObject_HEAD
95
- struct perf_evsel *evsel;
128
+ struct evsel *evsel;
96129 struct perf_sample sample;
97130 union perf_event event;
98131 };
....@@ -114,12 +147,12 @@
114147 sample_members
115148 member_def(perf_event_header, type, T_UINT, "event type"),
116149 member_def(perf_event_header, misc, T_UINT, "event misc"),
117
- member_def(mmap_event, pid, T_UINT, "event pid"),
118
- member_def(mmap_event, tid, T_UINT, "event tid"),
119
- member_def(mmap_event, start, T_ULONGLONG, "start of the map"),
120
- member_def(mmap_event, len, T_ULONGLONG, "map length"),
121
- member_def(mmap_event, pgoff, T_ULONGLONG, "page offset"),
122
- member_def(mmap_event, filename, T_STRING_INPLACE, "backing store"),
150
+ member_def(perf_record_mmap, pid, T_UINT, "event pid"),
151
+ member_def(perf_record_mmap, tid, T_UINT, "event tid"),
152
+ member_def(perf_record_mmap, start, T_ULONGLONG, "start of the map"),
153
+ member_def(perf_record_mmap, len, T_ULONGLONG, "map length"),
154
+ member_def(perf_record_mmap, pgoff, T_ULONGLONG, "page offset"),
155
+ member_def(perf_record_mmap, filename, T_STRING_INPLACE, "backing store"),
123156 { .name = NULL, },
124157 };
125158
....@@ -128,8 +161,8 @@
128161 PyObject *ret;
129162 char *s;
130163
131
- if (asprintf(&s, "{ type: mmap, pid: %u, tid: %u, start: %#" PRIx64 ", "
132
- "length: %#" PRIx64 ", offset: %#" PRIx64 ", "
164
+ if (asprintf(&s, "{ type: mmap, pid: %u, tid: %u, start: %#" PRI_lx64 ", "
165
+ "length: %#" PRI_lx64 ", offset: %#" PRI_lx64 ", "
133166 "filename: %s }",
134167 pevent->event.mmap.pid, pevent->event.mmap.tid,
135168 pevent->event.mmap.start, pevent->event.mmap.len,
....@@ -157,18 +190,18 @@
157190 static PyMemberDef pyrf_task_event__members[] = {
158191 sample_members
159192 member_def(perf_event_header, type, T_UINT, "event type"),
160
- member_def(fork_event, pid, T_UINT, "event pid"),
161
- member_def(fork_event, ppid, T_UINT, "event ppid"),
162
- member_def(fork_event, tid, T_UINT, "event tid"),
163
- member_def(fork_event, ptid, T_UINT, "event ptid"),
164
- member_def(fork_event, time, T_ULONGLONG, "timestamp"),
193
+ member_def(perf_record_fork, pid, T_UINT, "event pid"),
194
+ member_def(perf_record_fork, ppid, T_UINT, "event ppid"),
195
+ member_def(perf_record_fork, tid, T_UINT, "event tid"),
196
+ member_def(perf_record_fork, ptid, T_UINT, "event ptid"),
197
+ member_def(perf_record_fork, time, T_ULONGLONG, "timestamp"),
165198 { .name = NULL, },
166199 };
167200
168201 static PyObject *pyrf_task_event__repr(struct pyrf_event *pevent)
169202 {
170203 return _PyUnicode_FromFormat("{ type: %s, pid: %u, ppid: %u, tid: %u, "
171
- "ptid: %u, time: %" PRIu64 "}",
204
+ "ptid: %u, time: %" PRI_lu64 "}",
172205 pevent->event.header.type == PERF_RECORD_FORK ? "fork" : "exit",
173206 pevent->event.fork.pid,
174207 pevent->event.fork.ppid,
....@@ -192,9 +225,9 @@
192225 static PyMemberDef pyrf_comm_event__members[] = {
193226 sample_members
194227 member_def(perf_event_header, type, T_UINT, "event type"),
195
- member_def(comm_event, pid, T_UINT, "event pid"),
196
- member_def(comm_event, tid, T_UINT, "event tid"),
197
- member_def(comm_event, comm, T_STRING_INPLACE, "process name"),
228
+ member_def(perf_record_comm, pid, T_UINT, "event pid"),
229
+ member_def(perf_record_comm, tid, T_UINT, "event tid"),
230
+ member_def(perf_record_comm, comm, T_STRING_INPLACE, "process name"),
198231 { .name = NULL, },
199232 };
200233
....@@ -221,18 +254,18 @@
221254 static PyMemberDef pyrf_throttle_event__members[] = {
222255 sample_members
223256 member_def(perf_event_header, type, T_UINT, "event type"),
224
- member_def(throttle_event, time, T_ULONGLONG, "timestamp"),
225
- member_def(throttle_event, id, T_ULONGLONG, "event id"),
226
- member_def(throttle_event, stream_id, T_ULONGLONG, "event stream id"),
257
+ member_def(perf_record_throttle, time, T_ULONGLONG, "timestamp"),
258
+ member_def(perf_record_throttle, id, T_ULONGLONG, "event id"),
259
+ member_def(perf_record_throttle, stream_id, T_ULONGLONG, "event stream id"),
227260 { .name = NULL, },
228261 };
229262
230263 static PyObject *pyrf_throttle_event__repr(struct pyrf_event *pevent)
231264 {
232
- struct throttle_event *te = (struct throttle_event *)(&pevent->event.header + 1);
265
+ struct perf_record_throttle *te = (struct perf_record_throttle *)(&pevent->event.header + 1);
233266
234
- return _PyUnicode_FromFormat("{ type: %sthrottle, time: %" PRIu64 ", id: %" PRIu64
235
- ", stream_id: %" PRIu64 " }",
267
+ return _PyUnicode_FromFormat("{ type: %sthrottle, time: %" PRI_lu64 ", id: %" PRI_lu64
268
+ ", stream_id: %" PRI_lu64 " }",
236269 pevent->event.header.type == PERF_RECORD_THROTTLE ? "" : "un",
237270 te->time, te->id, te->stream_id);
238271 }
....@@ -251,8 +284,8 @@
251284
252285 static PyMemberDef pyrf_lost_event__members[] = {
253286 sample_members
254
- member_def(lost_event, id, T_ULONGLONG, "event id"),
255
- member_def(lost_event, lost, T_ULONGLONG, "number of lost events"),
287
+ member_def(perf_record_lost, id, T_ULONGLONG, "event id"),
288
+ member_def(perf_record_lost, lost, T_ULONGLONG, "number of lost events"),
256289 { .name = NULL, },
257290 };
258291
....@@ -261,8 +294,8 @@
261294 PyObject *ret;
262295 char *s;
263296
264
- if (asprintf(&s, "{ type: lost, id: %#" PRIx64 ", "
265
- "lost: %#" PRIx64 " }",
297
+ if (asprintf(&s, "{ type: lost, id: %#" PRI_lx64 ", "
298
+ "lost: %#" PRI_lx64 " }",
266299 pevent->event.lost.id, pevent->event.lost.lost) < 0) {
267300 ret = PyErr_NoMemory();
268301 } else {
....@@ -286,8 +319,8 @@
286319
287320 static PyMemberDef pyrf_read_event__members[] = {
288321 sample_members
289
- member_def(read_event, pid, T_UINT, "event pid"),
290
- member_def(read_event, tid, T_UINT, "event tid"),
322
+ member_def(perf_record_read, pid, T_UINT, "event pid"),
323
+ member_def(perf_record_read, tid, T_UINT, "event tid"),
291324 { .name = NULL, },
292325 };
293326
....@@ -336,40 +369,40 @@
336369
337370 static bool is_tracepoint(struct pyrf_event *pevent)
338371 {
339
- return pevent->evsel->attr.type == PERF_TYPE_TRACEPOINT;
372
+ return pevent->evsel->core.attr.type == PERF_TYPE_TRACEPOINT;
340373 }
341374
342375 static PyObject*
343
-tracepoint_field(struct pyrf_event *pe, struct format_field *field)
376
+tracepoint_field(struct pyrf_event *pe, struct tep_format_field *field)
344377 {
345
- struct tep_handle *pevent = field->event->pevent;
378
+ struct tep_handle *pevent = field->event->tep;
346379 void *data = pe->sample.raw_data;
347380 PyObject *ret = NULL;
348381 unsigned long long val;
349382 unsigned int offset, len;
350383
351
- if (field->flags & FIELD_IS_ARRAY) {
384
+ if (field->flags & TEP_FIELD_IS_ARRAY) {
352385 offset = field->offset;
353386 len = field->size;
354
- if (field->flags & FIELD_IS_DYNAMIC) {
387
+ if (field->flags & TEP_FIELD_IS_DYNAMIC) {
355388 val = tep_read_number(pevent, data + offset, len);
356389 offset = val;
357390 len = offset >> 16;
358391 offset &= 0xffff;
359392 }
360
- if (field->flags & FIELD_IS_STRING &&
393
+ if (field->flags & TEP_FIELD_IS_STRING &&
361394 is_printable_array(data + offset, len)) {
362395 ret = _PyUnicode_FromString((char *)data + offset);
363396 } else {
364397 ret = PyByteArray_FromStringAndSize((const char *) data + offset, len);
365
- field->flags &= ~FIELD_IS_STRING;
398
+ field->flags &= ~TEP_FIELD_IS_STRING;
366399 }
367400 } else {
368401 val = tep_read_number(pevent, data + field->offset,
369402 field->size);
370
- if (field->flags & FIELD_IS_POINTER)
403
+ if (field->flags & TEP_FIELD_IS_POINTER)
371404 ret = PyLong_FromUnsignedLong((unsigned long) val);
372
- else if (field->flags & FIELD_IS_SIGNED)
405
+ else if (field->flags & TEP_FIELD_IS_SIGNED)
373406 ret = PyLong_FromLong((long) val);
374407 else
375408 ret = PyLong_FromUnsignedLong((unsigned long) val);
....@@ -382,13 +415,13 @@
382415 get_tracepoint_field(struct pyrf_event *pevent, PyObject *attr_name)
383416 {
384417 const char *str = _PyUnicode_AsString(PyObject_Str(attr_name));
385
- struct perf_evsel *evsel = pevent->evsel;
386
- struct format_field *field;
418
+ struct evsel *evsel = pevent->evsel;
419
+ struct tep_format_field *field;
387420
388421 if (!evsel->tp_format) {
389
- struct event_format *tp_format;
422
+ struct tep_event *tp_format;
390423
391
- tp_format = trace_event__tp_format_id(evsel->attr.config);
424
+ tp_format = trace_event__tp_format_id(evsel->core.attr.config);
392425 if (!tp_format)
393426 return NULL;
394427
....@@ -429,8 +462,8 @@
429462 static PyMemberDef pyrf_context_switch_event__members[] = {
430463 sample_members
431464 member_def(perf_event_header, type, T_UINT, "event type"),
432
- member_def(context_switch_event, next_prev_pid, T_UINT, "next/prev pid"),
433
- member_def(context_switch_event, next_prev_tid, T_UINT, "next/prev tid"),
465
+ member_def(perf_record_switch, next_prev_pid, T_UINT, "next/prev pid"),
466
+ member_def(perf_record_switch, next_prev_tid, T_UINT, "next/prev tid"),
434467 { .name = NULL, },
435468 };
436469
....@@ -535,7 +568,7 @@
535568 struct pyrf_cpu_map {
536569 PyObject_HEAD
537570
538
- struct cpu_map *cpus;
571
+ struct perf_cpu_map *cpus;
539572 };
540573
541574 static int pyrf_cpu_map__init(struct pyrf_cpu_map *pcpus,
....@@ -548,7 +581,7 @@
548581 kwlist, &cpustr))
549582 return -1;
550583
551
- pcpus->cpus = cpu_map__new(cpustr);
584
+ pcpus->cpus = perf_cpu_map__new(cpustr);
552585 if (pcpus->cpus == NULL)
553586 return -1;
554587 return 0;
....@@ -556,7 +589,7 @@
556589
557590 static void pyrf_cpu_map__delete(struct pyrf_cpu_map *pcpus)
558591 {
559
- cpu_map__put(pcpus->cpus);
592
+ perf_cpu_map__put(pcpus->cpus);
560593 Py_TYPE(pcpus)->tp_free((PyObject*)pcpus);
561594 }
562595
....@@ -604,7 +637,7 @@
604637 struct pyrf_thread_map {
605638 PyObject_HEAD
606639
607
- struct thread_map *threads;
640
+ struct perf_thread_map *threads;
608641 };
609642
610643 static int pyrf_thread_map__init(struct pyrf_thread_map *pthreads,
....@@ -625,7 +658,7 @@
625658
626659 static void pyrf_thread_map__delete(struct pyrf_thread_map *pthreads)
627660 {
628
- thread_map__put(pthreads->threads);
661
+ perf_thread_map__put(pthreads->threads);
629662 Py_TYPE(pthreads)->tp_free((PyObject*)pthreads);
630663 }
631664
....@@ -673,7 +706,7 @@
673706 struct pyrf_evsel {
674707 PyObject_HEAD
675708
676
- struct perf_evsel evsel;
709
+ struct evsel evsel;
677710 };
678711
679712 static int pyrf_evsel__init(struct pyrf_evsel *pevsel,
....@@ -781,22 +814,22 @@
781814 attr.sample_id_all = sample_id_all;
782815 attr.size = sizeof(attr);
783816
784
- perf_evsel__init(&pevsel->evsel, &attr, idx);
817
+ evsel__init(&pevsel->evsel, &attr, idx);
785818 return 0;
786819 }
787820
788821 static void pyrf_evsel__delete(struct pyrf_evsel *pevsel)
789822 {
790
- perf_evsel__exit(&pevsel->evsel);
823
+ evsel__exit(&pevsel->evsel);
791824 Py_TYPE(pevsel)->tp_free((PyObject*)pevsel);
792825 }
793826
794827 static PyObject *pyrf_evsel__open(struct pyrf_evsel *pevsel,
795828 PyObject *args, PyObject *kwargs)
796829 {
797
- struct perf_evsel *evsel = &pevsel->evsel;
798
- struct cpu_map *cpus = NULL;
799
- struct thread_map *threads = NULL;
830
+ struct evsel *evsel = &pevsel->evsel;
831
+ struct perf_cpu_map *cpus = NULL;
832
+ struct perf_thread_map *threads = NULL;
800833 PyObject *pcpus = NULL, *pthreads = NULL;
801834 int group = 0, inherit = 0;
802835 static char *kwlist[] = { "cpus", "threads", "group", "inherit", NULL };
....@@ -811,12 +844,12 @@
811844 if (pcpus != NULL)
812845 cpus = ((struct pyrf_cpu_map *)pcpus)->cpus;
813846
814
- evsel->attr.inherit = inherit;
847
+ evsel->core.attr.inherit = inherit;
815848 /*
816849 * This will group just the fds for this single evsel, to group
817850 * multiple events, use evlist.open().
818851 */
819
- if (perf_evsel__open(evsel, cpus, threads) < 0) {
852
+ if (evsel__open(evsel, cpus, threads) < 0) {
820853 PyErr_SetFromErrno(PyExc_OSError);
821854 return NULL;
822855 }
....@@ -857,35 +890,35 @@
857890 struct pyrf_evlist {
858891 PyObject_HEAD
859892
860
- struct perf_evlist evlist;
893
+ struct evlist evlist;
861894 };
862895
863896 static int pyrf_evlist__init(struct pyrf_evlist *pevlist,
864897 PyObject *args, PyObject *kwargs __maybe_unused)
865898 {
866899 PyObject *pcpus = NULL, *pthreads = NULL;
867
- struct cpu_map *cpus;
868
- struct thread_map *threads;
900
+ struct perf_cpu_map *cpus;
901
+ struct perf_thread_map *threads;
869902
870903 if (!PyArg_ParseTuple(args, "OO", &pcpus, &pthreads))
871904 return -1;
872905
873906 threads = ((struct pyrf_thread_map *)pthreads)->threads;
874907 cpus = ((struct pyrf_cpu_map *)pcpus)->cpus;
875
- perf_evlist__init(&pevlist->evlist, cpus, threads);
908
+ evlist__init(&pevlist->evlist, cpus, threads);
876909 return 0;
877910 }
878911
879912 static void pyrf_evlist__delete(struct pyrf_evlist *pevlist)
880913 {
881
- perf_evlist__exit(&pevlist->evlist);
914
+ evlist__exit(&pevlist->evlist);
882915 Py_TYPE(pevlist)->tp_free((PyObject*)pevlist);
883916 }
884917
885918 static PyObject *pyrf_evlist__mmap(struct pyrf_evlist *pevlist,
886919 PyObject *args, PyObject *kwargs)
887920 {
888
- struct perf_evlist *evlist = &pevlist->evlist;
921
+ struct evlist *evlist = &pevlist->evlist;
889922 static char *kwlist[] = { "pages", "overwrite", NULL };
890923 int pages = 128, overwrite = false;
891924
....@@ -893,7 +926,7 @@
893926 &pages, &overwrite))
894927 return NULL;
895928
896
- if (perf_evlist__mmap(evlist, pages) < 0) {
929
+ if (evlist__mmap(evlist, pages) < 0) {
897930 PyErr_SetFromErrno(PyExc_OSError);
898931 return NULL;
899932 }
....@@ -905,14 +938,14 @@
905938 static PyObject *pyrf_evlist__poll(struct pyrf_evlist *pevlist,
906939 PyObject *args, PyObject *kwargs)
907940 {
908
- struct perf_evlist *evlist = &pevlist->evlist;
941
+ struct evlist *evlist = &pevlist->evlist;
909942 static char *kwlist[] = { "timeout", NULL };
910943 int timeout = -1, n;
911944
912945 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i", kwlist, &timeout))
913946 return NULL;
914947
915
- n = perf_evlist__poll(evlist, timeout);
948
+ n = evlist__poll(evlist, timeout);
916949 if (n < 0) {
917950 PyErr_SetFromErrno(PyExc_OSError);
918951 return NULL;
....@@ -925,21 +958,21 @@
925958 PyObject *args __maybe_unused,
926959 PyObject *kwargs __maybe_unused)
927960 {
928
- struct perf_evlist *evlist = &pevlist->evlist;
961
+ struct evlist *evlist = &pevlist->evlist;
929962 PyObject *list = PyList_New(0);
930963 int i;
931964
932
- for (i = 0; i < evlist->pollfd.nr; ++i) {
965
+ for (i = 0; i < evlist->core.pollfd.nr; ++i) {
933966 PyObject *file;
934967 #if PY_MAJOR_VERSION < 3
935
- FILE *fp = fdopen(evlist->pollfd.entries[i].fd, "r");
968
+ FILE *fp = fdopen(evlist->core.pollfd.entries[i].fd, "r");
936969
937970 if (fp == NULL)
938971 goto free_list;
939972
940973 file = PyFile_FromFile(fp, "perf", "r", NULL);
941974 #else
942
- file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1,
975
+ file = PyFile_FromFd(evlist->core.pollfd.entries[i].fd, "perf", "r", -1,
943976 NULL, NULL, NULL, 0);
944977 #endif
945978 if (file == NULL)
....@@ -963,29 +996,29 @@
963996 PyObject *args,
964997 PyObject *kwargs __maybe_unused)
965998 {
966
- struct perf_evlist *evlist = &pevlist->evlist;
999
+ struct evlist *evlist = &pevlist->evlist;
9671000 PyObject *pevsel;
968
- struct perf_evsel *evsel;
1001
+ struct evsel *evsel;
9691002
9701003 if (!PyArg_ParseTuple(args, "O", &pevsel))
9711004 return NULL;
9721005
9731006 Py_INCREF(pevsel);
9741007 evsel = &((struct pyrf_evsel *)pevsel)->evsel;
975
- evsel->idx = evlist->nr_entries;
976
- perf_evlist__add(evlist, evsel);
1008
+ evsel->idx = evlist->core.nr_entries;
1009
+ evlist__add(evlist, evsel);
9771010
978
- return Py_BuildValue("i", evlist->nr_entries);
1011
+ return Py_BuildValue("i", evlist->core.nr_entries);
9791012 }
9801013
981
-static struct perf_mmap *get_md(struct perf_evlist *evlist, int cpu)
1014
+static struct mmap *get_md(struct evlist *evlist, int cpu)
9821015 {
9831016 int i;
9841017
985
- for (i = 0; i < evlist->nr_mmaps; i++) {
986
- struct perf_mmap *md = &evlist->mmap[i];
1018
+ for (i = 0; i < evlist->core.nr_mmaps; i++) {
1019
+ struct mmap *md = &evlist->mmap[i];
9871020
988
- if (md->cpu == cpu)
1021
+ if (md->core.cpu == cpu)
9891022 return md;
9901023 }
9911024
....@@ -995,11 +1028,11 @@
9951028 static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist,
9961029 PyObject *args, PyObject *kwargs)
9971030 {
998
- struct perf_evlist *evlist = &pevlist->evlist;
1031
+ struct evlist *evlist = &pevlist->evlist;
9991032 union perf_event *event;
10001033 int sample_id_all = 1, cpu;
10011034 static char *kwlist[] = { "cpu", "sample_id_all", NULL };
1002
- struct perf_mmap *md;
1035
+ struct mmap *md;
10031036 int err;
10041037
10051038 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|i", kwlist,
....@@ -1010,14 +1043,14 @@
10101043 if (!md)
10111044 return NULL;
10121045
1013
- if (perf_mmap__read_init(md) < 0)
1046
+ if (perf_mmap__read_init(&md->core) < 0)
10141047 goto end;
10151048
1016
- event = perf_mmap__read_event(md);
1049
+ event = perf_mmap__read_event(&md->core);
10171050 if (event != NULL) {
10181051 PyObject *pyevent = pyrf_event__new(event);
10191052 struct pyrf_event *pevent = (struct pyrf_event *)pyevent;
1020
- struct perf_evsel *evsel;
1053
+ struct evsel *evsel;
10211054
10221055 if (pyevent == NULL)
10231056 return PyErr_NoMemory();
....@@ -1030,10 +1063,10 @@
10301063
10311064 pevent->evsel = evsel;
10321065
1033
- err = perf_evsel__parse_sample(evsel, event, &pevent->sample);
1066
+ err = evsel__parse_sample(evsel, event, &pevent->sample);
10341067
10351068 /* Consume the even only after we parsed it out. */
1036
- perf_mmap__consume(md);
1069
+ perf_mmap__consume(&md->core);
10371070
10381071 if (err)
10391072 return PyErr_Format(PyExc_OSError,
....@@ -1048,7 +1081,7 @@
10481081 static PyObject *pyrf_evlist__open(struct pyrf_evlist *pevlist,
10491082 PyObject *args, PyObject *kwargs)
10501083 {
1051
- struct perf_evlist *evlist = &pevlist->evlist;
1084
+ struct evlist *evlist = &pevlist->evlist;
10521085 int group = 0;
10531086 static char *kwlist[] = { "group", NULL };
10541087
....@@ -1058,7 +1091,7 @@
10581091 if (group)
10591092 perf_evlist__set_leader(evlist);
10601093
1061
- if (perf_evlist__open(evlist) < 0) {
1094
+ if (evlist__open(evlist) < 0) {
10621095 PyErr_SetFromErrno(PyExc_OSError);
10631096 return NULL;
10641097 }
....@@ -1111,15 +1144,15 @@
11111144 {
11121145 struct pyrf_evlist *pevlist = (void *)obj;
11131146
1114
- return pevlist->evlist.nr_entries;
1147
+ return pevlist->evlist.core.nr_entries;
11151148 }
11161149
11171150 static PyObject *pyrf_evlist__item(PyObject *obj, Py_ssize_t i)
11181151 {
11191152 struct pyrf_evlist *pevlist = (void *)obj;
1120
- struct perf_evsel *pos;
1153
+ struct evsel *pos;
11211154
1122
- if (i >= pevlist->evlist.nr_entries)
1155
+ if (i >= pevlist->evlist.core.nr_entries)
11231156 return NULL;
11241157
11251158 evlist__for_each_entry(&pevlist->evlist, pos) {
....@@ -1241,7 +1274,7 @@
12411274 static PyObject *pyrf__tracepoint(struct pyrf_evsel *pevsel,
12421275 PyObject *args, PyObject *kwargs)
12431276 {
1244
- struct event_format *tp_format;
1277
+ struct tep_event *tp_format;
12451278 static char *kwlist[] = { "sys", "name", NULL };
12461279 char *sys = NULL;
12471280 char *name = NULL;