|
@@ -11,6 +11,7 @@
|
|
|
#include "cpumap.h"
|
|
|
#include "print_binary.h"
|
|
|
#include "thread_map.h"
|
|
|
+#include "mmap.h"
|
|
|
|
|
|
#if PY_MAJOR_VERSION < 3
|
|
|
#define _PyUnicode_FromString(arg) \
|
|
@@ -976,6 +977,20 @@ static PyObject *pyrf_evlist__add(struct pyrf_evlist *pevlist,
|
|
|
return Py_BuildValue("i", evlist->nr_entries);
|
|
|
}
|
|
|
|
|
|
+static struct perf_mmap *get_md(struct perf_evlist *evlist, int cpu)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ for (i = 0; i < evlist->nr_mmaps; i++) {
|
|
|
+ struct perf_mmap *md = &evlist->mmap[i];
|
|
|
+
|
|
|
+ if (md->cpu == cpu)
|
|
|
+ return md;
|
|
|
+ }
|
|
|
+
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
+
|
|
|
static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist,
|
|
|
PyObject *args, PyObject *kwargs)
|
|
|
{
|
|
@@ -990,7 +1005,10 @@ static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist,
|
|
|
&cpu, &sample_id_all))
|
|
|
return NULL;
|
|
|
|
|
|
- md = &evlist->mmap[cpu];
|
|
|
+ md = get_md(evlist, cpu);
|
|
|
+ if (!md)
|
|
|
+ return NULL;
|
|
|
+
|
|
|
if (perf_mmap__read_init(md) < 0)
|
|
|
goto end;
|
|
|
|