aboutsummaryrefslogtreecommitdiff
path: root/perf
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@linux.intel.com>2010-08-11 13:07:03 -0400
committerArjan van de Ven <arjan@linux.intel.com>2010-08-11 13:07:03 -0400
commiteb73e09045591d34c27d213cc07bd802ba7f5009 (patch)
tree819dc68a169d65fb294daf4449047d7b1ea7a385 /perf
parent810d2dd4440a8df483ae1bbd426879f2e38584f2 (diff)
downloadpowertop-eb73e09045591d34c27d213cc07bd802ba7f5009.tar.gz
register events for all cpus
Diffstat (limited to 'perf')
-rw-r--r--perf/perf_bundle.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/perf/perf_bundle.cpp b/perf/perf_bundle.cpp
index 7cce96c..dc612c2 100644
--- a/perf/perf_bundle.cpp
+++ b/perf/perf_bundle.cpp
@@ -8,6 +8,8 @@
#include "perf_event.h"
#include "perf.h"
+#include "../cpu/cpu.h"
+
class perf_bundle_event: public perf_event
{
virtual void handle_event(struct perf_event_header *header, void *cookie);
@@ -29,18 +31,25 @@ void perf_bundle_event::handle_event(struct perf_event_header *header, void *coo
void perf_bundle::add_event(const char *event_name)
{
+ unsigned int i;
class perf_event *ev;
- ev = new class perf_bundle_event();
+ for (i = 0; i < all_cpus.size(); i++) {
+
+ if (!all_cpus[i])
+ continue;
+
+ ev = new class perf_bundle_event();
- ev->set_event_name(event_name);
- ev->set_cpu(5);
+ ev->set_event_name(event_name);
+ ev->set_cpu(i);
- if (event_names.size() <= ev->trace_type)
- event_names.resize(ev->trace_type + 1);
- event_names[ev->trace_type] = strdup(event_name);
+ if (event_names.size() <= ev->trace_type)
+ event_names.resize(ev->trace_type + 1);
+ event_names[ev->trace_type] = strdup(event_name);
- events.push_back(ev);
+ events.push_back(ev);
+ }
}
void perf_bundle::start(void)