aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/lib/threadmap.c
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2019-07-21 07:24:19 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2019-07-29 17:34:44 -0400
commit4b49cce25e719587e934b745fe9bbb5bc8c4ba29 (patch)
treed5ec29f16b67c2508a62860243ce3eb1e8c56798 /tools/perf/lib/threadmap.c
parent07acd22677ac6bb2db404d1d258e8c7d06ca7706 (diff)
libperf: Add perf_thread_map__new_dummy() function
Moving the following functions: thread_map__new_dummy() thread_map__realloc() thread_map__set_pid() to libperf with the following names: perf_thread_map__new_dummy() perf_thread_map__realloc() perf_thread_map__set_pid() the other 2 functions are dependencies of the perf_thread_map__new_dummy() function. The perf_thread_map__realloc() function is not exported. 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-33-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/lib/threadmap.c')
-rw-r--r--tools/perf/lib/threadmap.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/perf/lib/threadmap.c b/tools/perf/lib/threadmap.c
index 163dc609b909..23e628a1437a 100644
--- a/tools/perf/lib/threadmap.c
+++ b/tools/perf/lib/threadmap.c
@@ -3,3 +3,46 @@
3#include <stdlib.h> 3#include <stdlib.h>
4#include <linux/refcount.h> 4#include <linux/refcount.h>
5#include <internal/threadmap.h> 5#include <internal/threadmap.h>
6#include <string.h>
7
8static void perf_thread_map__reset(struct perf_thread_map *map, int start, int nr)
9{
10 size_t size = (nr - start) * sizeof(map->map[0]);
11
12 memset(&map->map[start], 0, size);
13 map->err_thread = -1;
14}
15
16struct perf_thread_map *perf_thread_map__realloc(struct perf_thread_map *map, int nr)
17{
18 size_t size = sizeof(*map) + sizeof(map->map[0]) * nr;
19 int start = map ? map->nr : 0;
20
21 map = realloc(map, size);
22 /*
23 * We only realloc to add more items, let's reset new items.
24 */
25 if (map)
26 perf_thread_map__reset(map, start, nr);
27
28 return map;
29}
30
31#define thread_map__alloc(__nr) perf_thread_map__realloc(NULL, __nr)
32
33void perf_thread_map__set_pid(struct perf_thread_map *map, int thread, pid_t pid)
34{
35 map->map[thread].pid = pid;
36}
37
38struct perf_thread_map *perf_thread_map__new_dummy(void)
39{
40 struct perf_thread_map *threads = thread_map__alloc(1);
41
42 if (threads != NULL) {
43 perf_thread_map__set_pid(threads, 0, -1);
44 threads->nr = 1;
45 refcount_set(&threads->refcnt, 1);
46 }
47 return threads;
48}