perf evlist: Open event on evsel cpus and threads
authorKan Liang <kan.liang@intel.com>
Fri, 21 Aug 2015 06:23:14 +0000 (02:23 -0400)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 31 Aug 2015 20:28:01 +0000 (17:28 -0300)
An evsel may have different cpus and threads than the evlist it is in.

Use it's own cpus and threads, when opening the evsel in 'perf record'.

Signed-off-by: Kan Liang <kan.liang@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/1440138194-17001-1-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-record.c
tools/perf/util/evlist.c

index a660022f2c929cd97061848311e24ec4cac5e289..1d14f382f6146f8097cec0d0dfc543f782e1f438 100644 (file)
@@ -279,7 +279,7 @@ static int record__open(struct record *rec)
 
        evlist__for_each(evlist, pos) {
 try_again:
-               if (perf_evsel__open(pos, evlist->cpus, evlist->threads) < 0) {
+               if (perf_evsel__open(pos, pos->cpus, pos->threads) < 0) {
                        if (perf_evsel__fallback(pos, errno, msg, sizeof(msg))) {
                                if (verbose)
                                        ui__warning("%s\n", msg);
index 8d00039d6a20ab333441dae4816f52ad3fb00149..d51a5200c8af77b76e98c85d55f8acee8db304f0 100644 (file)
@@ -1181,6 +1181,10 @@ int perf_evlist__apply_filters(struct perf_evlist *evlist, struct perf_evsel **e
                if (evsel->filter == NULL)
                        continue;
 
+               /*
+                * filters only work for tracepoint event, which doesn't have cpu limit.
+                * So evlist and evsel should always be same.
+                */
                err = perf_evsel__apply_filter(evsel, ncpus, nthreads, evsel->filter);
                if (err) {
                        *err_evsel = evsel;