From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Wang Nan <wangnan0@huawei.com>,
lkml <linux-kernel@vger.kernel.org>,
Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 1/6] perf tools: Add unit_number__scnprint function
Date: Tue, 10 Jan 2017 10:22:36 -0300 [thread overview]
Message-ID: <20170110132236.GB24073@kernel.org> (raw)
In-Reply-To: <1483955520-29063-2-git-send-email-jolsa@kernel.org>
Em Mon, Jan 09, 2017 at 10:51:55AM +0100, Jiri Olsa escreveu:
> Adding unit_number__scnprint function to display
Renaming to unit_number__scnprintf() for consistency.
- Arnaldo
> size units and use it in -m option info message.
>
> Before:
> $ perf record -m 10M ls
> rounding mmap pages size to 16777216 bytes (4096 pages)
> ...
>
> After:
> $ perf record -m 10M ls
> rounding mmap pages size to 16M (4096 pages)
> ...
>
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> Cc: David Ahern <dsahern@gmail.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Cc: Wang Nan <wangnan0@huawei.com>
> Link: http://lkml.kernel.org/n/tip-0gafw11lesghnbfoiw90kc3q@git.kernel.org
> ---
> tools/perf/tests/Build | 1 +
> tools/perf/tests/builtin-test.c | 4 ++++
> tools/perf/tests/tests.h | 1 +
> tools/perf/tests/unit_number__scnprint.c | 37 ++++++++++++++++++++++++++++++++
> tools/perf/util/evlist.c | 8 +++++--
> tools/perf/util/util.c | 13 +++++++++++
> tools/perf/util/util.h | 1 +
> 7 files changed, 63 insertions(+), 2 deletions(-)
> create mode 100644 tools/perf/tests/unit_number__scnprint.c
>
> diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build
> index 6676c2dd6dcb..4f653d257225 100644
> --- a/tools/perf/tests/Build
> +++ b/tools/perf/tests/Build
> @@ -44,6 +44,7 @@ perf-y += is_printable_array.o
> perf-y += bitmap.o
> perf-y += perf-hooks.o
> perf-y += clang.o
> +perf-y += unit_number__scnprint.o
>
> $(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build
> $(call rule_mkdir)
> diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
> index a77dcc0d24e3..5d93c41803d3 100644
> --- a/tools/perf/tests/builtin-test.c
> +++ b/tools/perf/tests/builtin-test.c
> @@ -247,6 +247,10 @@ static struct test generic_tests[] = {
> }
> },
> {
> + .desc = "unit_number__scnprint",
> + .func = test__unit_number__scnprint,
> + },
> + {
> .func = NULL,
> },
> };
> diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h
> index a512f0c8ff5b..1fa9b9d83aa5 100644
> --- a/tools/perf/tests/tests.h
> +++ b/tools/perf/tests/tests.h
> @@ -96,6 +96,7 @@ int test__perf_hooks(int subtest);
> int test__clang(int subtest);
> const char *test__clang_subtest_get_desc(int subtest);
> int test__clang_subtest_get_nr(void);
> +int test__unit_number__scnprint(int subtest);
>
> #if defined(__arm__) || defined(__aarch64__)
> #ifdef HAVE_DWARF_UNWIND_SUPPORT
> diff --git a/tools/perf/tests/unit_number__scnprint.c b/tools/perf/tests/unit_number__scnprint.c
> new file mode 100644
> index 000000000000..b336024b6c6a
> --- /dev/null
> +++ b/tools/perf/tests/unit_number__scnprint.c
> @@ -0,0 +1,37 @@
> +#include <linux/compiler.h>
> +#include <linux/types.h>
> +#include "tests.h"
> +#include "util.h"
> +#include "debug.h"
> +
> +int test__unit_number__scnprint(int subtest __maybe_unused)
> +{
> + struct {
> + u64 n;
> + const char *str;
> + } test[] = {
> + { 1, "1B" },
> + { 10*1024, "10K" },
> + { 20*1024*1024, "20M" },
> + { 30*1024*1024*1024ULL, "30G" },
> + { 0, "0B" },
> + { 0, NULL },
> + };
> + unsigned i = 0;
> +
> + while (test[i].str) {
> + char buf[100];
> +
> + unit_number__scnprint(buf, sizeof(buf), test[i].n);
> +
> + pr_debug("n %" PRIu64 ", str '%s', buf '%s'\n",
> + test[i].n, test[i].str, buf);
> +
> + if (strcmp(test[i].str, buf))
> + return TEST_FAIL;
> +
> + i++;
> + }
> +
> + return TEST_OK;
> +}
> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
> index d92e02006fb8..435ff1c94a66 100644
> --- a/tools/perf/util/evlist.c
> +++ b/tools/perf/util/evlist.c
> @@ -1224,12 +1224,16 @@ static long parse_pages_arg(const char *str, unsigned long min,
> if (pages == 0 && min == 0) {
> /* leave number of pages at 0 */
> } else if (!is_power_of_2(pages)) {
> + char buf[100];
> +
> /* round pages up to next power of 2 */
> pages = roundup_pow_of_two(pages);
> if (!pages)
> return -EINVAL;
> - pr_info("rounding mmap pages size to %lu bytes (%lu pages)\n",
> - pages * page_size, pages);
> +
> + unit_number__scnprint(buf, sizeof(buf), pages * page_size);
> + pr_info("rounding mmap pages size to %s (%lu pages)\n",
> + buf, pages);
> }
>
> if (pages > max)
> diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
> index 9ddd98827d12..c2b941dd8826 100644
> --- a/tools/perf/util/util.c
> +++ b/tools/perf/util/util.c
> @@ -789,3 +789,16 @@ int is_printable_array(char *p, unsigned int len)
> }
> return 1;
> }
> +
> +int unit_number__scnprint(char *buf, size_t size, u64 n)
> +{
> + char unit[4] = "BKMG";
> + int i = 0;
> +
> + while (((n / 1024) > 1) && (i < 3)) {
> + n /= 1024;
> + i++;
> + }
> +
> + return scnprintf(buf, size, "%" PRIu64 "%c", n, unit[i]);
> +}
> diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
> index 1d639e38aa82..e2a627cd11dd 100644
> --- a/tools/perf/util/util.h
> +++ b/tools/perf/util/util.h
> @@ -363,4 +363,5 @@ int is_printable_array(char *p, unsigned int len);
>
> int timestamp__scnprintf_usec(u64 timestamp, char *buf, size_t sz);
>
> +int unit_number__scnprint(char *buf, size_t size, u64 n);
> #endif /* GIT_COMPAT_UTIL_H */
> --
> 2.7.4
next prev parent reply other threads:[~2017-01-10 13:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-09 9:51 [PATCHv2 0/7] perf tools: Add switch-output size and time threshold options Jiri Olsa
2017-01-09 9:51 ` [PATCH 1/6] perf tools: Add unit_number__scnprint function Jiri Olsa
2017-01-10 13:22 ` Arnaldo Carvalho de Melo [this message]
2017-01-12 8:31 ` [tip:perf/core] perf tools: Add unit_number__scnprintf function tip-bot for Jiri Olsa
2017-01-09 9:51 ` [PATCH 2/6] perf record: Add struct switch_output Jiri Olsa
2017-01-12 8:32 ` [tip:perf/core] " tip-bot for Jiri Olsa
2017-01-09 9:51 ` [PATCH 3/6] perf record: Change switch-output option to take optional argument Jiri Olsa
2017-01-12 8:32 ` [tip:perf/core] " tip-bot for Jiri Olsa
2017-01-09 9:51 ` [PATCH 4/6] perf record: Add switch-output size option argument Jiri Olsa
2017-01-12 8:33 ` [tip:perf/core] " tip-bot for Jiri Olsa
2017-01-09 9:51 ` [PATCH 5/6] perf record: Add switch-output size warning Jiri Olsa
2017-01-12 8:33 ` [tip:perf/core] " tip-bot for Jiri Olsa
2017-01-09 9:52 ` [PATCH 6/6] perf record: Add switch-output time option argument Jiri Olsa
2017-01-12 8:34 ` [tip:perf/core] " 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=20170110132236.GB24073@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 \
--cc=wangnan0@huawei.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).