Hi Arnaldo, On Sat, Feb 25, 2017 at 1:27 PM, Namhyung Kim <namhy...@kernel.org> wrote: > Hi Arnaldo, > > On Fri, Feb 24, 2017 at 06:08:53PM -0300, Arnaldo Carvalho de Melo wrote: >> Em Fri, Feb 24, 2017 at 10:12:49AM +0900, Namhyung Kim escreveu: >> > The cpu_map__snprint_mask() is to generate string representation of >> > cpumask bitmap. For cpu 0 to 11, it'll return "fff". >> > >> > Cc: Steven Rostedt <rost...@goodmis.org> >> > Cc: Frederic Weisbecker <fweis...@gmail.com> >> > Signed-off-by: Namhyung Kim <namhy...@kernel.org> >> > --- >> > 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 8c7504939113..08540ab2a891 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(char val) >> >> Why do you use 'char' above and... > > My bad. The argument should be unsigned. The semantics is that it > converts a bitmap value into a character (string). > >> >> > +{ >> > + if (0 <= val && val <= 9) >> > + return val + '0'; >> > + if (10 <= val && val < 16) >> > + return val - 10 + 'a'; >> > + return '?'; >> > +} >> > +size_t cpu_map__snprint_mask(struct cpu_map *map, char *buf, size_t size) >> <SNIP> >> > + for (cpu = last_cpu / 4 * 4; cpu >= 0; cpu -= 4) { >> > + unsigned char bits = bitmap[cpu / 8]; >> >> 'unsigned char' here? >> >> Some compilers don't like it, for instance: >> >> 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 >> >> And: >> >> 10 debian:experimental-x-arm64: FAIL >> >> CC /tmp/build/perf/util/cpumap.o >> util/cpumap.c: In function 'hex_char': >> util/cpumap.c:679:8: error: comparison is always true due to limited range >> of data type [-Werror=type-limits] >> if (0 <= val && val <= 9) >> ^~ >> >> Are you ok with the patch below? > > I'd rather change hex_char() instead. How about this? > > diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c > index 6ab8699f0233..061018b42393 100644 > --- a/tools/perf/util/cpumap.c > +++ b/tools/perf/util/cpumap.c > @@ -674,11 +674,11 @@ size_t cpu_map__snprint(struct cpu_map *map, char *buf, > size_t size) > return ret; > } > > -static char hex_char(char val) > +static char hex_char(unsigned char val) > { > - if (0 <= val && val <= 9) > + if (val < 10) > return val + '0'; > - if (10 <= val && val < 16) > + if (val < 16) > return val - 10 + 'a'; > return '?'; > } >
Ping! Thanks, Namhyung