Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1593639
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 22/35] perf cpumap: Introduce cpu_map__snprint_mask() |
| Date | 2017-03-06 20:50 +0100 |
| Message-ID | <ti6NP-4s3-1@gated-at.bofh.it> (permalink) |
| References | <ti6E9-4o1-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Namhyung Kim <namhyung@kernel.org>
The cpu_map__snprint_mask() generates a string representation of a
cpumask bitmap. For cpu 0 to 11, it'll return "fff".
Committer notes:
Fix compiler warning on some toolchains:
19 fedora:24-x-ARC-uClibc: FAIL
CC /tmp/build/perf/util/cpumap.o
util/cpumap.c: In function 'hex_char':
util/cpumap.c:679:2: error: comparison is always true due to limited range of data type [-Werror=type-limits]
if (0 <= val && val <= 9)
^
cc1: all warnings being treated as errors
Applying patch from Namhyung that makes function receive an 'unsigned
char', that is what the callers are passing to this function.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: kernel-team@lge.com
Link: http://lkml.kernel.org/r/20170224011251.14946-2-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/cpumap.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
tools/perf/util/cpumap.h | 1 +
2 files changed, 47 insertions(+)
diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c
index 39ad2caccf56..061018b42393 100644
--- a/tools/perf/util/cpumap.c
+++ b/tools/perf/util/cpumap.c
@@ -673,3 +673,49 @@ size_t cpu_map__snprint(struct cpu_map *map, char *buf, size_t size)
pr_debug("cpumask list: %s\n", buf);
return ret;
}
+
+static char hex_char(unsigned char val)
+{
+ if (val < 10)
+ return val + '0';
+ if (val < 16)
+ return val - 10 + 'a';
+ return '?';
+}
+
+size_t cpu_map__snprint_mask(struct cpu_map *map, char *buf, size_t size)
+{
+ int i, cpu;
+ char *ptr = buf;
+ unsigned char *bitmap;
+ int last_cpu = cpu_map__cpu(map, map->nr - 1);
+
+ bitmap = zalloc((last_cpu + 7) / 8);
+ if (bitmap == NULL) {
+ buf[0] = '\0';
+ return 0;
+ }
+
+ for (i = 0; i < map->nr; i++) {
+ cpu = cpu_map__cpu(map, i);
+ bitmap[cpu / 8] |= 1 << (cpu % 8);
+ }
+
+ for (cpu = last_cpu / 4 * 4; cpu >= 0; cpu -= 4) {
+ unsigned char bits = bitmap[cpu / 8];
+
+ if (cpu % 8)
+ bits >>= 4;
+ else
+ bits &= 0xf;
+
+ *ptr++ = hex_char(bits);
+ if ((cpu % 32) == 0 && cpu > 0)
+ *ptr++ = ',';
+ }
+ *ptr = '\0';
+ free(bitmap);
+
+ buf[size - 1] = '\0';
+ return ptr - buf;
+}
diff --git a/tools/perf/util/cpumap.h b/tools/perf/util/cpumap.h
index e84491636c1b..6b8bff87481d 100644
--- a/tools/perf/util/cpumap.h
+++ b/tools/perf/util/cpumap.h
@@ -20,6 +20,7 @@ struct cpu_map *cpu_map__dummy_new(void);
struct cpu_map *cpu_map__new_data(struct cpu_map_data *data);
struct cpu_map *cpu_map__read(FILE *file);
size_t cpu_map__snprint(struct cpu_map *map, char *buf, size_t size);
+size_t cpu_map__snprint_mask(struct cpu_map *map, char *buf, size_t size);
size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp);
int cpu_map__get_socket_id(int cpu);
int cpu_map__get_socket(struct cpu_map *map, int idx, void *data);
--
2.9.3
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[GIT PULL 00/35] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 22/35] perf cpumap: Introduce cpu_map__snprint_mask() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 12/35] perf comm: Convert comm_str.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 30/35] perf tools: Force uncore events to system wide monitoring Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 27/35] perf probe: Generalize probe event file open routine Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 17/35] perf thread: convert thread.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 25/35] kretprobes: Ensure probe location is at function entry Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 13/35] perf dso: Convert dso.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 21/35] perf ftrace: Add support for --pid option Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 19/35] perf evlist: Clarify a bit the use of perf_mmap->refcnt Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 23/35] perf ftrace: Add support for -a and -C option Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 10/35] perf cgroup: Convert cgroup_sel.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 07/35] tools include: Provide gcc based cmpxchg fallback for !x86 Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 20/35] perf tools: Allow sorting by symbol size Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 28/35] perf intel-PT/BTS: Add missing initialization Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 33/35] perf bench futex: Fix build on musl + clang Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 05/35] tools arch x86: Introduce atomic_cmpxchg() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 14/35] perf map: Convert map.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 16/35] perf evlist: Convert perf_map.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 06/35] tools include: Introduce atomic_cmpxchg_{relaxed,release}() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 24/35] perf ftrace: Use pager for displaying result Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 35/35] perf bench numa: Add more comment for -c option Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 11/35] perf cpumap: Convert cpu_map.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 02/35] perf stat: Issue a HW watchdog disable hint Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 26/35] trace/kprobes: Allow return probes with offsets and absolute addresses Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 15/35] perf map: Convert map_groups.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 01/35] perf vendor events: Add mapping for KnightsMill PMU events Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 32/35] perf bench futex: Use __maybe_unused Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 29/35] trace/kprobes: Add back warning about offset in return probes Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 31/35] tools build: Add test for sched_getcpu() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 09/35] tools include: Adopt kernel's refcount.h Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 18/35] perf thread_map: Convert thread_map.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 34/35] tools build: Use the same CC for feature detection and actual build Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
Re: [GIT PULL 00/35] perf/core improvements and fixes Ingo Molnar <mingo@kernel.org> - 2017-03-07 08:20 +0100
csiph-web