On Tue, Aug 18, 2015 at 05:25:37AM -0400, kan.li...@intel.com wrote:
> From: Kan Liang <kan.li...@intel.com>
> 
> evsel may have different cpus and threads as evlist's.
> Use it's own cpus and threads, when open evsel in perf record.
> 
> Signed-off-by: Kan Liang <kan.li...@intel.com>
> ---
>  tools/perf/builtin-record.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
> index 25cf6b4..a0178bf 100644
> --- a/tools/perf/builtin-record.c
> +++ b/tools/perf/builtin-record.c
> @@ -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);
> -- 
> 1.8.3.1
> 

dont we need then handle filters the same way?
like in attached change? totally untested..

jirka


---
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 7aa039bd379a..f5cdf678d504 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -244,12 +244,9 @@ static void handle_initial_delay(void)
        struct perf_evsel *counter;
 
        if (initial_delay) {
-               const int ncpus = cpu_map__nr(evsel_list->cpus),
-                       nthreads = thread_map__nr(evsel_list->threads);
-
                usleep(initial_delay * 1000);
                evlist__for_each(evsel_list, counter)
-                       perf_evsel__enable(counter, ncpus, nthreads);
+                       perf_evsel__enable(counter);
        }
 }
 
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 373f65b02545..0d8428458ae1 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1172,14 +1172,12 @@ int perf_evlist__apply_filters(struct perf_evlist 
*evlist, struct perf_evsel **e
 {
        struct perf_evsel *evsel;
        int err = 0;
-       const int ncpus = cpu_map__nr(evlist->cpus),
-                 nthreads = thread_map__nr(evlist->threads);
 
        evlist__for_each(evlist, evsel) {
                if (evsel->filter == NULL)
                        continue;
 
-               err = perf_evsel__apply_filter(evsel, ncpus, nthreads, 
evsel->filter);
+               err = perf_evsel__apply_filter(evsel, evsel->filter);
                if (err) {
                        *err_evsel = evsel;
                        break;
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index b096ef7a240c..e1e70c55c68d 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -898,9 +898,10 @@ static int perf_evsel__alloc_fd(struct perf_evsel *evsel, 
int ncpus, int nthread
        return evsel->fd != NULL ? 0 : -ENOMEM;
 }
 
-static int perf_evsel__run_ioctl(struct perf_evsel *evsel, int ncpus, int 
nthreads,
-                         int ioc,  void *arg)
+static int perf_evsel__run_ioctl(struct perf_evsel *evsel, int ioc,  void *arg)
 {
+       int ncpus = cpu_map__nr(evsel->cpus),
+           nthreads = thread_map__nr(evsel->threads);
        int cpu, thread;
 
        if (evsel->system_wide)
@@ -919,11 +920,9 @@ static int perf_evsel__run_ioctl(struct perf_evsel *evsel, 
int ncpus, int nthrea
        return 0;
 }
 
-int perf_evsel__apply_filter(struct perf_evsel *evsel, int ncpus, int nthreads,
-                            const char *filter)
+int perf_evsel__apply_filter(struct perf_evsel *evsel, const char *filter)
 {
-       return perf_evsel__run_ioctl(evsel, ncpus, nthreads,
-                                    PERF_EVENT_IOC_SET_FILTER,
+       return perf_evsel__run_ioctl(evsel, PERF_EVENT_IOC_SET_FILTER,
                                     (void *)filter);
 }
 
@@ -957,11 +956,9 @@ int perf_evsel__append_filter(struct perf_evsel *evsel,
        return -1;
 }
 
-int perf_evsel__enable(struct perf_evsel *evsel, int ncpus, int nthreads)
+int perf_evsel__enable(struct perf_evsel *evsel)
 {
-       return perf_evsel__run_ioctl(evsel, ncpus, nthreads,
-                                    PERF_EVENT_IOC_ENABLE,
-                                    0);
+       return perf_evsel__run_ioctl(evsel, PERF_EVENT_IOC_ENABLE, 0);
 }
 
 int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads)
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 93ac6b128149..bb5b9c1d482b 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -214,9 +214,8 @@ void perf_evsel__set_sample_id(struct perf_evsel *evsel,
 int perf_evsel__set_filter(struct perf_evsel *evsel, const char *filter);
 int perf_evsel__append_filter(struct perf_evsel *evsel,
                              const char *op, const char *filter);
-int perf_evsel__apply_filter(struct perf_evsel *evsel, int ncpus, int nthreads,
-                            const char *filter);
-int perf_evsel__enable(struct perf_evsel *evsel, int ncpus, int nthreads);
+int perf_evsel__apply_filter(struct perf_evsel *evsel, const char *filter);
+int perf_evsel__enable(struct perf_evsel *evsel);
 
 int perf_evsel__open_per_cpu(struct perf_evsel *evsel,
                             struct cpu_map *cpus);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to