diff options
author | Arjan van de Ven <arjan@linux.intel.com> | 2010-08-09 13:40:19 -0400 |
---|---|---|
committer | Arjan van de Ven <arjan@linux.intel.com> | 2010-08-09 13:40:19 -0400 |
commit | cb2e75eae87de17c0b683d730ddbc571a28c947f (patch) | |
tree | 1f88f80abb8a25977e50b9a4e47f8dba9de3d87f /perf | |
parent | c8089be3f04d986146ebb1429ff482569b5e6588 (diff) | |
download | powertop-cb2e75eae87de17c0b683d730ddbc571a28c947f.tar.gz |
make the perf stuff actually work
Diffstat (limited to 'perf')
-rw-r--r-- | perf/perf.cpp | 19 | ||||
-rw-r--r-- | perf/perf.h | 10 |
2 files changed, 24 insertions, 5 deletions
diff --git a/perf/perf.cpp b/perf/perf.cpp index d99dc08..64ef32d 100644 --- a/perf/perf.cpp +++ b/perf/perf.cpp @@ -53,9 +53,12 @@ static int get_trace_type(const char *eventname) char filename[4096]; sprintf(filename, "/sys/kernel/debug/tracing/events/%s/id", eventname); - file.open("/sys/kernel/debug/tracing/events/%s/id", ios::in); - if (!file) - return 0; + + file.open(filename, ios::in); + if (!file) { + cout << "Invalid trace type " << eventname << "\n"; + return -1; + } file >> this_trace; @@ -154,10 +157,15 @@ void perf_event::set_event_name(const char *event_name) perf_event::perf_event(const char *event_name, int buffer_size) { set_event_name(event_name); + perf_fd = -1; bufsize = buffer_size; } - +perf_event::perf_event(void) +{ + perf_fd = -1; + bufsize = 128; +} void perf_event::start(void) { @@ -200,7 +208,8 @@ void perf_event::process(void) void perf_event::clear(void) { munmap(perf_mmap, (bufsize+1)*getpagesize()); - close(perf_fd); + if (perf_fd != -1) + close(perf_fd); perf_fd = -1; } diff --git a/perf/perf.h b/perf/perf.h index db3c3ef..43f3f80 100644 --- a/perf/perf.h +++ b/perf/perf.h @@ -1,3 +1,7 @@ +#ifndef _INCLUDE_GUARD_PERF_H_ +#define _INCLUDE_GUARD_PERF_H_ + +#include <iostream> using namespace std; @@ -16,7 +20,10 @@ protected: void create_perf_event(char *eventname); public: + perf_event(void); perf_event(const char *event_name, int buffer_size = 128); + + void set_event_name(const char *event_name); void start(void); @@ -27,3 +34,6 @@ public: virtual void handle_event(struct perf_event_header *header) { }; }; + + +#endif
\ No newline at end of file |