diff options
author | Jiri Olsa <jolsa@kernel.org> | 2019-07-21 13:24:17 +0200 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2019-07-29 18:34:44 -0300 |
commit | 38f01d8da1d8d28678ea16a0a484f4d3eded34b2 (patch) | |
tree | 7ab5e39d58a734182355370694e8460418f7a717 /tools/perf/lib/cpumap.c | |
parent | 397721e06e52d017cfdd403f63284ed0995d4caf (diff) | |
download | lwn-38f01d8da1d8d28678ea16a0a484f4d3eded34b2.tar.gz lwn-38f01d8da1d8d28678ea16a0a484f4d3eded34b2.zip |
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/cpumap.c')
-rw-r--r-- | tools/perf/lib/cpumap.c | 24 |
1 files changed, 24 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 @@ #include <stdlib.h> #include <linux/refcount.h> #include <internal/cpumap.h> +#include <asm/bug.h> +#include <stdio.h> struct perf_cpu_map *perf_cpu_map__dummy_new(void) { @@ -16,3 +18,25 @@ struct perf_cpu_map *perf_cpu_map__dummy_new(void) return cpus; } + +static void cpu_map__delete(struct perf_cpu_map *map) +{ + if (map) { + WARN_ONCE(refcount_read(&map->refcnt) != 0, + "cpu_map refcnt unbalanced\n"); + free(map); + } +} + +struct perf_cpu_map *perf_cpu_map__get(struct perf_cpu_map *map) +{ + if (map) + refcount_inc(&map->refcnt); + return map; +} + +void perf_cpu_map__put(struct perf_cpu_map *map) +{ + if (map && refcount_dec_and_test(&map->refcnt)) + cpu_map__delete(map); +} |