aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/lib
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2019-07-21 07:24:17 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2019-07-29 17:34:44 -0400
commit38f01d8da1d8d28678ea16a0a484f4d3eded34b2 (patch)
tree7ab5e39d58a734182355370694e8460418f7a717 /tools/perf/lib
parent397721e06e52d017cfdd403f63284ed0995d4caf (diff)
libperf: Add perf_cpu_map__get()/perf_cpu_map__put()
Moving the following functions: cpu_map__get() cpu_map__put() to libperf with following names: perf_cpu_map__get() perf_cpu_map__put() Committer notes: Added fixes for arm/arm64 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-31-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/lib')
-rw-r--r--tools/perf/lib/cpumap.c24
-rw-r--r--tools/perf/lib/include/perf/cpumap.h2
-rw-r--r--tools/perf/lib/libperf.map2
3 files changed, 28 insertions, 0 deletions
diff --git a/tools/perf/lib/cpumap.c b/tools/perf/lib/cpumap.c
index 80d587ab95aa..f3cfb4c71106 100644
--- a/tools/perf/lib/cpumap.c
+++ b/tools/perf/lib/cpumap.c
@@ -3,6 +3,8 @@
3#include <stdlib.h> 3#include <stdlib.h>
4#include <linux/refcount.h> 4#include <linux/refcount.h>
5#include <internal/cpumap.h> 5#include <internal/cpumap.h>
6#include <asm/bug.h>
7#include <stdio.h>
6 8
7struct perf_cpu_map *perf_cpu_map__dummy_new(void) 9struct perf_cpu_map *perf_cpu_map__dummy_new(void)
8{ 10{
@@ -16,3 +18,25 @@ struct perf_cpu_map *perf_cpu_map__dummy_new(void)
16 18
17 return cpus; 19 return cpus;
18} 20}
21
22static void cpu_map__delete(struct perf_cpu_map *map)
23{
24 if (map) {
25 WARN_ONCE(refcount_read(&map->refcnt) != 0,
26 "cpu_map refcnt unbalanced\n");
27 free(map);
28 }
29}
30
31struct perf_cpu_map *perf_cpu_map__get(struct perf_cpu_map *map)
32{
33 if (map)
34 refcount_inc(&map->refcnt);
35 return map;
36}
37
38void perf_cpu_map__put(struct perf_cpu_map *map)
39{
40 if (map && refcount_dec_and_test(&map->refcnt))
41 cpu_map__delete(map);
42}
diff --git a/tools/perf/lib/include/perf/cpumap.h b/tools/perf/lib/include/perf/cpumap.h
index fa1e5aa9d662..e16c2515a499 100644
--- a/tools/perf/lib/include/perf/cpumap.h
+++ b/tools/perf/lib/include/perf/cpumap.h
@@ -7,5 +7,7 @@
7struct perf_cpu_map; 7struct perf_cpu_map;
8 8
9LIBPERF_API struct perf_cpu_map *perf_cpu_map__dummy_new(void); 9LIBPERF_API struct perf_cpu_map *perf_cpu_map__dummy_new(void);
10LIBPERF_API struct perf_cpu_map *perf_cpu_map__get(struct perf_cpu_map *map);
11LIBPERF_API void perf_cpu_map__put(struct perf_cpu_map *map);
10 12
11#endif /* __LIBPERF_CPUMAP_H */ 13#endif /* __LIBPERF_CPUMAP_H */
diff --git a/tools/perf/lib/libperf.map b/tools/perf/lib/libperf.map
index 65201c6cbe7e..76ce3bc59dd8 100644
--- a/tools/perf/lib/libperf.map
+++ b/tools/perf/lib/libperf.map
@@ -2,6 +2,8 @@ LIBPERF_0.0.1 {
2 global: 2 global:
3 libperf_set_print; 3 libperf_set_print;
4 perf_cpu_map__dummy_new; 4 perf_cpu_map__dummy_new;
5 perf_cpu_map__get;
6 perf_cpu_map__put;
5 local: 7 local:
6 *; 8 *;
7}; 9};