aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Senozhatsky <sergey.senozhatsky@gmail.com>2011-01-08 00:09:31 +0200
committerArjan van de Ven <arjan@linux.intel.com>2011-01-11 09:06:18 -0800
commitf81f1fdea488579e6cab6a0d86ae0568ee03fa4a (patch)
tree8cb29081e4e29b7d29a3e456c441b392fd9ce82c
parentfaf52fc1c6a2f16a734bf5c77f16af15cab0df47 (diff)
downloadpowertop-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.h2
-rw-r--r--perf/perf_bundle.cpp26
-rw-r--r--perf/perf_bundle.h3
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