|
@@ -983,13 +983,19 @@ static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist,
|
|
|
union perf_event *event;
|
|
|
int sample_id_all = 1, cpu;
|
|
|
static char *kwlist[] = { "cpu", "sample_id_all", NULL };
|
|
|
+ struct perf_mmap *md;
|
|
|
+ u64 end, start;
|
|
|
int err;
|
|
|
|
|
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|i", kwlist,
|
|
|
&cpu, &sample_id_all))
|
|
|
return NULL;
|
|
|
|
|
|
- event = perf_evlist__mmap_read(evlist, cpu);
|
|
|
+ md = &evlist->mmap[cpu];
|
|
|
+ if (perf_mmap__read_init(md, false, &start, &end) < 0)
|
|
|
+ goto end;
|
|
|
+
|
|
|
+ event = perf_mmap__read_event(md, false, &start, end);
|
|
|
if (event != NULL) {
|
|
|
PyObject *pyevent = pyrf_event__new(event);
|
|
|
struct pyrf_event *pevent = (struct pyrf_event *)pyevent;
|
|
@@ -1007,14 +1013,14 @@ static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist,
|
|
|
err = perf_evsel__parse_sample(evsel, event, &pevent->sample);
|
|
|
|
|
|
/* Consume the even only after we parsed it out. */
|
|
|
- perf_evlist__mmap_consume(evlist, cpu);
|
|
|
+ perf_mmap__consume(md, false);
|
|
|
|
|
|
if (err)
|
|
|
return PyErr_Format(PyExc_OSError,
|
|
|
"perf: can't parse sample, err=%d", err);
|
|
|
return pyevent;
|
|
|
}
|
|
|
-
|
|
|
+end:
|
|
|
Py_INCREF(Py_None);
|
|
|
return Py_None;
|
|
|
}
|