libperf: Add perf_evsel__new() function
authorJiri Olsa <jolsa@kernel.org>
Sun, 21 Jul 2019 11:24:33 +0000 (13:24 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 29 Jul 2019 21:34:45 +0000 (18:34 -0300)
Add a perf_evsel__new() function to create and init a perf_evsel struct
dynamicaly.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20190721112506.12306-47-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/lib/evsel.c
tools/perf/lib/include/perf/evsel.h
tools/perf/lib/libperf.map

index 17cba35becc74e69b4b4e2ba9c5976a058665cf4..8e91738c5c380b25860d03b89ab4e2f750535f49 100644 (file)
@@ -2,9 +2,20 @@
 #include <perf/evsel.h>
 #include <linux/list.h>
 #include <internal/evsel.h>
+#include <linux/zalloc.h>
 
 void perf_evsel__init(struct perf_evsel *evsel, struct perf_event_attr *attr)
 {
        INIT_LIST_HEAD(&evsel->node);
        evsel->attr = *attr;
 }
+
+struct perf_evsel *perf_evsel__new(struct perf_event_attr *attr)
+{
+       struct perf_evsel *evsel = zalloc(sizeof(*evsel));
+
+       if (evsel != NULL)
+               perf_evsel__init(evsel, attr);
+
+       return evsel;
+}
index 295583b89f46f49825b2c5b8b3bf991aad9c63ab..21b66fc1937f824320687eeb261931fb9cdb2911 100644 (file)
@@ -9,5 +9,6 @@ struct perf_event_attr;
 
 LIBPERF_API void perf_evsel__init(struct perf_evsel *evsel,
                                  struct perf_event_attr *attr);
+LIBPERF_API struct perf_evsel *perf_evsel__new(struct perf_event_attr *attr);
 
 #endif /* __LIBPERF_EVSEL_H */
index 5e685d6c7a95611aead03466aa97248c1de85fef..e3eac9b607264a096401d31e40884fa29f934795 100644 (file)
@@ -11,6 +11,7 @@ LIBPERF_0.0.1 {
                perf_thread_map__comm;
                perf_thread_map__get;
                perf_thread_map__put;
+               perf_evsel__new;
                perf_evsel__init;
                perf_evlist__new;
                perf_evlist__init;