diff options
author | Sergey Senozhatsky <sergey.senozhatsky@gmail.com> | 2011-01-08 00:09:31 +0200 |
---|---|---|
committer | Arjan van de Ven <arjan@linux.intel.com> | 2011-01-11 09:06:18 -0800 |
commit | f81f1fdea488579e6cab6a0d86ae0568ee03fa4a (patch) | |
tree | 8cb29081e4e29b7d29a3e456c441b392fd9ce82c | |
parent | faf52fc1c6a2f16a734bf5c77f16af15cab0df47 (diff) | |
download | powertop-f81f1fdea488579e6cab6a0d86ae0568ee03fa4a.tar.gz |
introduce perf_bundle release method
Introduce perf_bundle release function to free allocated memory
for events, event_names and records vectors;
-rw-r--r-- | perf/perf.h | 2 | ||||
-rw-r--r-- | perf/perf_bundle.cpp | 26 | ||||
-rw-r--r-- | perf/perf_bundle.h | 3 |
3 files changed, 29 insertions, 2 deletions
diff --git a/perf/perf.h b/perf/perf.h index faeb6b3..6af7af6 100644 --- a/perf/perf.h +++ b/perf/perf.h @@ -65,4 +65,4 @@ public: }; -#endif
\ No newline at end of file +#endif diff --git a/perf/perf_bundle.cpp b/perf/perf_bundle.cpp index 81ac1a1..15a563e 100644 --- a/perf/perf_bundle.cpp +++ b/perf/perf_bundle.cpp @@ -59,6 +59,32 @@ void perf_bundle_event::handle_event(struct perf_event_header *header, void *coo } +void perf_bundle::release(void) +{ + class perf_event *ev; + unsigned int i = 0; + + for (i = 0; i < events.size(); i++) { + ev = events[i]; + if (!ev) + continue; + ev->clear(); + delete ev; + } + events.clear(); + + for (i = 0; i < event_names.size(); i++) { + free((void*)event_names[i]); + } + event_names.clear(); + + for(i = 0; i < records.size(); i++) { + free(records[i]); + } + records.clear(); +} + + void perf_bundle::add_event(const char *event_name) { unsigned int i; diff --git a/perf/perf_bundle.h b/perf/perf_bundle.h index 8bc4913..b372c82 100644 --- a/perf/perf_bundle.h +++ b/perf/perf_bundle.h @@ -42,6 +42,7 @@ protected: public: vector<void *> records; + virtual void release(void); void add_event(const char *event_name); void start(void); @@ -54,4 +55,4 @@ public: }; -#endif
\ No newline at end of file +#endif |