From 06b85ca6e04bd12e3d2ddc8ca65a92e1beb14792 Mon Sep 17 00:00:00 2001 From: David Ahern Date: Thu, 25 Aug 2011 10:17:55 -0600 Subject: [PATCH] --- yaml --- r: 264095 b: refs/heads/master c: 764e16a30a77a9c8346fbae6615e7c818ce9d00f h: refs/heads/master i: 264093: 62c54943375ad5a6b9e925e50aef61bab5dc9d93 264091: 2cdb27d4a6bba025c73332b4507fda5f34fceaa9 264087: f0e28c7f1d6fcf19a14a52503d3217fe87f4899f 264079: 0482e22b41178c8e9c81907e86abecd7ee107b94 264063: 5d7ea9b5cc558a9603a5ede41b6bbd9888a61572 v: v3 --- [refs] | 2 +- trunk/tools/perf/builtin-record.c | 3 +++ trunk/tools/perf/util/evlist.c | 13 +++++++++++++ trunk/tools/perf/util/evlist.h | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d6db2cf7d548..ccacbcef0cd9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 694bf407b06113f5e0f71764756f11903126fec0 +refs/heads/master: 764e16a30a77a9c8346fbae6615e7c818ce9d00f diff --git a/trunk/tools/perf/builtin-record.c b/trunk/tools/perf/builtin-record.c index 6b0519f885e4..f4c3fbee4bad 100644 --- a/trunk/tools/perf/builtin-record.c +++ b/trunk/tools/perf/builtin-record.c @@ -161,6 +161,7 @@ static void config_attr(struct perf_evsel *evsel, struct perf_evlist *evlist) struct perf_event_attr *attr = &evsel->attr; int track = !evsel->idx; /* only the first counter needs these */ + attr->disabled = 1; attr->inherit = !no_inherit; attr->read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING | @@ -671,6 +672,8 @@ static int __cmd_record(int argc, const char **argv) } } + perf_evlist__enable(evsel_list); + /* * Let the child rip */ diff --git a/trunk/tools/perf/util/evlist.c b/trunk/tools/perf/util/evlist.c index c12bd476c6f7..72e9f4886b6d 100644 --- a/trunk/tools/perf/util/evlist.c +++ b/trunk/tools/perf/util/evlist.c @@ -113,6 +113,19 @@ void perf_evlist__disable(struct perf_evlist *evlist) } } +void perf_evlist__enable(struct perf_evlist *evlist) +{ + int cpu, thread; + struct perf_evsel *pos; + + for (cpu = 0; cpu < evlist->cpus->nr; cpu++) { + list_for_each_entry(pos, &evlist->entries, node) { + for (thread = 0; thread < evlist->threads->nr; thread++) + ioctl(FD(pos, cpu, thread), PERF_EVENT_IOC_ENABLE); + } + } +} + int perf_evlist__alloc_pollfd(struct perf_evlist *evlist) { int nfds = evlist->cpus->nr * evlist->threads->nr * evlist->nr_entries; diff --git a/trunk/tools/perf/util/evlist.h b/trunk/tools/perf/util/evlist.h index ce85ae9ae57a..f34915002745 100644 --- a/trunk/tools/perf/util/evlist.h +++ b/trunk/tools/perf/util/evlist.h @@ -54,6 +54,7 @@ int perf_evlist__mmap(struct perf_evlist *evlist, int pages, bool overwrite); void perf_evlist__munmap(struct perf_evlist *evlist); void perf_evlist__disable(struct perf_evlist *evlist); +void perf_evlist__enable(struct perf_evlist *evlist); static inline void perf_evlist__set_maps(struct perf_evlist *evlist, struct cpu_map *cpus,