All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Jiri Olsa <jolsa@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
	kernel-team@lge.com, Steven Rostedt <rostedt@goodmis.org>,
	Frederic Weisbecker <fweisbec@gmail.com>
Subject: Re: [PATCH 2/4] perf tools: Introduce cpu_map__snprint_mask()
Date: Fri, 24 Feb 2017 18:08:53 -0300	[thread overview]
Message-ID: <20170224210853.GB15145@kernel.org> (raw)
In-Reply-To: <20170224011251.14946-2-namhyung@kernel.org>

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 <rostedt@goodmis.org>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Signed-off-by: Namhyung Kim <namhyung@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...

> +{
> +	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?

diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c
index 6ab8699f0233..405f56ad5c24 100644
--- a/tools/perf/util/cpumap.c
+++ b/tools/perf/util/cpumap.c
@@ -687,7 +687,7 @@ size_t cpu_map__snprint_mask(struct cpu_map *map, char *buf, size_t size)
 {
 	int i, cpu;
 	char *ptr = buf;
-	unsigned char *bitmap;
+	char *bitmap;
 	int last_cpu = cpu_map__cpu(map, map->nr - 1);
 
 	bitmap = zalloc((last_cpu + 7) / 8);
@@ -702,7 +702,7 @@ size_t cpu_map__snprint_mask(struct cpu_map *map, char *buf, size_t size)
 	}
 
 	for (cpu = last_cpu / 4 * 4; cpu >= 0; cpu -= 4) {
-		unsigned char bits = bitmap[cpu / 8];
+		char bits = bitmap[cpu / 8];
 
 		if (cpu % 8)
 			bits >>= 4;


> +		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 1a0549af8f5c..4d231c6eac0c 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.11.1

  reply	other threads:[~2017-02-24 21:16 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-24  1:12 [PATCH 1/4] perf ftrace: Add support for --pid option Namhyung Kim
2017-02-24  1:12 ` [PATCH 2/4] perf tools: Introduce cpu_map__snprint_mask() Namhyung Kim
2017-02-24 21:08   ` Arnaldo Carvalho de Melo [this message]
2017-02-25  4:27     ` Namhyung Kim
2017-03-01 14:58       ` Namhyung Kim
2017-03-01 20:26       ` Arnaldo Carvalho de Melo
2017-03-07  8:08   ` [tip:perf/core] perf cpumap: " tip-bot for Namhyung Kim
2017-02-24  1:12 ` [PATCH 3/4] perf ftrace: Add support for -a and -C option Namhyung Kim
2017-03-07  8:10   ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-24  1:12 ` [PATCH 4/4] perf ftrace: Use pager for displaying result Namhyung Kim
2017-03-07  8:12   ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-24 19:51 ` [PATCH 1/4] perf ftrace: Add support for --pid option Arnaldo Carvalho de Melo
2017-03-07  8:06 ` [tip:perf/core] " tip-bot for Namhyung Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170224210853.GB15145@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=fweisbec@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.