From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <jolsa@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
David Ahern <dsahern@gmail.com>, Ingo Molnar <mingo@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [PATCH 2/7] tools lib: Add bitmap_snprintf function
Date: Tue, 2 Aug 2016 12:25:57 -0300 [thread overview]
Message-ID: <20160802152557.GB16017@kernel.org> (raw)
In-Reply-To: <1470074555-24889-3-git-send-email-jolsa@kernel.org>
Em Mon, Aug 01, 2016 at 08:02:30PM +0200, Jiri Olsa escreveu:
> Add support to print bitmap list. Code mostly
> taken from kernel's bitmap_list_string.
Renaming it to bitmap_scnprintf() as it is a wrapper on top of
scnprintf() that has a different semanting for the return value than
snprintf().
- Arnaldo
> Link: http://lkml.kernel.org/n/tip-ictn3ke5ewrzwyn8webfeai9@git.kernel.org
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
> tools/include/linux/bitmap.h | 10 ++++++++++
> tools/lib/bitmap.c | 29 +++++++++++++++++++++++++++++
> 2 files changed, 39 insertions(+)
>
> diff --git a/tools/include/linux/bitmap.h b/tools/include/linux/bitmap.h
> index 66ddd992e690..43a0d06beabb 100644
> --- a/tools/include/linux/bitmap.h
> +++ b/tools/include/linux/bitmap.h
> @@ -75,4 +75,14 @@ static inline unsigned long *bitmap_alloc(int nbits)
> return malloc(BITS_TO_LONGS(nbits) * sizeof(unsigned long));
> }
>
> +/**
> + * bitmap_snprintf - print bitmap list into buffer
> + * @bitmap: bitmap
> + * @nbits: size of bitmap
> + * @buf: buffer to store output
> + * @size: size of @buf
> + */
> +size_t bitmap_snprintf(unsigned long *bitmap, int nbits,
> + char *buf, size_t size);
> +
> #endif /* _PERF_BITOPS_H */
> diff --git a/tools/lib/bitmap.c b/tools/lib/bitmap.c
> index 0a1adc1111fd..184d97b276a1 100644
> --- a/tools/lib/bitmap.c
> +++ b/tools/lib/bitmap.c
> @@ -29,3 +29,32 @@ void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,
> for (k = 0; k < nr; k++)
> dst[k] = bitmap1[k] | bitmap2[k];
> }
> +
> +size_t bitmap_snprintf(unsigned long *bitmap, int nbits,
> + char *buf, size_t size)
> +{
> + /* current bit is 'cur', most recently seen range is [rbot, rtop] */
> + int cur, rbot, rtop;
> + bool first = true;
> + size_t ret = 0;
> +
> + rbot = cur = find_first_bit(bitmap, nbits);
> + while (cur < nbits) {
> + rtop = cur;
> + cur = find_next_bit(bitmap, nbits, cur + 1);
> + if (cur < nbits && cur <= rtop + 1)
> + continue;
> +
> + if (!first)
> + ret += scnprintf(buf + ret, size - ret, ",");
> +
> + first = false;
> +
> + ret += scnprintf(buf + ret, size - ret, "%d", rbot);
> + if (rbot < rtop)
> + ret += scnprintf(buf + ret, size - ret, "-%d", rtop);
> +
> + rbot = cur;
> + }
> + return ret;
> +}
> --
> 2.4.11
next prev parent reply other threads:[~2016-08-02 16:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-01 18:02 [PATCH 0/7] perf tools: Several fixes Jiri Olsa
2016-08-01 18:02 ` [PATCH 1/7] tools lib: Add bitmap_alloc function Jiri Olsa
2016-08-01 18:45 ` David Ahern
2016-08-02 9:33 ` Jiri Olsa
2016-08-02 11:33 ` [PATCHv2 " Jiri Olsa
2016-08-02 12:56 ` Arnaldo Carvalho de Melo
2016-08-02 13:03 ` Jiri Olsa
2016-08-04 9:11 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 2/7] tools lib: Add bitmap_snprintf function Jiri Olsa
2016-08-02 15:25 ` Arnaldo Carvalho de Melo [this message]
2016-08-04 9:11 ` [tip:perf/urgent] tools lib: Add bitmap_scnprintf function tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 3/7] tools lib: Add bitmap_and function Jiri Olsa
2016-08-04 9:11 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 4/7] perf tests: Add test for bitmap_snprintf function Jiri Olsa
2016-08-04 9:12 ` [tip:perf/urgent] perf tests: Add test for bitmap_scnprintf function tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 5/7] perf tools: Move config/Makefile into Makefile.config Jiri Olsa
2016-08-04 9:13 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 6/7] perf tools: Introduce hists__output_resort_cb function Jiri Olsa
2016-08-04 9:13 ` [tip:perf/urgent] perf hists: Introduce output_resort_cb method tip-bot for Jiri Olsa
2016-08-01 18:02 ` [PATCH 7/7] perf tools: Add --sample-cpu option to record command Jiri Olsa
2016-08-04 9:14 ` [tip:perf/urgent] perf record: Add --sample-cpu option tip-bot for Jiri Olsa
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=20160802152557.GB16017@kernel.org \
--to=acme@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.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.