diff options
Diffstat (limited to 'tools/perf/util/stat.c')
| -rw-r--r-- | tools/perf/util/stat.c | 16 | 
1 files changed, 14 insertions, 2 deletions
diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c index ebdd130557fb..5f26137b8d60 100644 --- a/tools/perf/util/stat.c +++ b/tools/perf/util/stat.c @@ -299,6 +299,7 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel,  	case AGGR_CORE:  	case AGGR_DIE:  	case AGGR_SOCKET: +	case AGGR_NODE:  	case AGGR_NONE:  		if (!evsel->snapshot)  			perf_evsel__compute_deltas(evsel, cpu, thread, count); @@ -463,7 +464,8 @@ size_t perf_event__fprintf_stat_config(union perf_event *event, FILE *fp)  int create_perf_stat_counter(struct evsel *evsel,  			     struct perf_stat_config *config, -			     struct target *target) +			     struct target *target, +			     int cpu)  {  	struct perf_event_attr *attr = &evsel->core.attr;  	struct evsel *leader = evsel->leader; @@ -490,6 +492,16 @@ int create_perf_stat_counter(struct evsel *evsel,  	if (config->identifier)  		attr->sample_type = PERF_SAMPLE_IDENTIFIER; +	if (config->all_user) { +		attr->exclude_kernel = 1; +		attr->exclude_user   = 0; +	} + +	if (config->all_kernel) { +		attr->exclude_kernel = 0; +		attr->exclude_user   = 1; +	} +  	/*  	 * Disabling all counters initially, they will be enabled  	 * either manually by us or by kernel via enable_on_exec @@ -507,7 +519,7 @@ int create_perf_stat_counter(struct evsel *evsel,  	}  	if (target__has_cpu(target) && !target__has_per_thread(target)) -		return perf_evsel__open_per_cpu(evsel, evsel__cpus(evsel)); +		return perf_evsel__open_per_cpu(evsel, evsel__cpus(evsel), cpu);  	return perf_evsel__open_per_thread(evsel, evsel->core.threads);  }  |