|
@@ -634,15 +634,15 @@ int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads)
|
|
|
return evsel->fd != NULL ? 0 : -ENOMEM;
|
|
|
}
|
|
|
|
|
|
-int perf_evsel__set_filter(struct perf_evsel *evsel, int ncpus, int nthreads,
|
|
|
- const char *filter)
|
|
|
+static int perf_evsel__run_ioctl(struct perf_evsel *evsel, int ncpus, int nthreads,
|
|
|
+ int ioc, void *arg)
|
|
|
{
|
|
|
int cpu, thread;
|
|
|
|
|
|
for (cpu = 0; cpu < ncpus; cpu++) {
|
|
|
for (thread = 0; thread < nthreads; thread++) {
|
|
|
int fd = FD(evsel, cpu, thread),
|
|
|
- err = ioctl(fd, PERF_EVENT_IOC_SET_FILTER, filter);
|
|
|
+ err = ioctl(fd, ioc, arg);
|
|
|
|
|
|
if (err)
|
|
|
return err;
|
|
@@ -652,6 +652,21 @@ int perf_evsel__set_filter(struct perf_evsel *evsel, int ncpus, int nthreads,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+int perf_evsel__set_filter(struct perf_evsel *evsel, int ncpus, int nthreads,
|
|
|
+ const char *filter)
|
|
|
+{
|
|
|
+ return perf_evsel__run_ioctl(evsel, ncpus, nthreads,
|
|
|
+ PERF_EVENT_IOC_SET_FILTER,
|
|
|
+ (void *)filter);
|
|
|
+}
|
|
|
+
|
|
|
+int perf_evsel__enable(struct perf_evsel *evsel, int ncpus, int nthreads)
|
|
|
+{
|
|
|
+ return perf_evsel__run_ioctl(evsel, ncpus, nthreads,
|
|
|
+ PERF_EVENT_IOC_ENABLE,
|
|
|
+ 0);
|
|
|
+}
|
|
|
+
|
|
|
int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads)
|
|
|
{
|
|
|
evsel->sample_id = xyarray__new(ncpus, nthreads, sizeof(struct perf_sample_id));
|