public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Jin Yao <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: kan.liang@intel.com, alexander.shishkin@linux.intel.com,
	hpa@zytor.com, tglx@linutronix.de, jolsa@redhat.com,
	linux-kernel@vger.kernel.org, acme@redhat.com,
	peterz@infradead.org, mingo@kernel.org, ak@linux.intel.com,
	yao.jin@linux.intel.com
Subject: [tip:perf/core] perf util: Allocate time slices buffer according to number of comma
Date: Wed, 17 Jan 2018 08:37:06 -0800	[thread overview]
Message-ID: <tip-5a031f887cb8d60fe87d21159c3cf82c38f55679@git.kernel.org> (raw)
In-Reply-To: <1515596433-24653-7-git-send-email-yao.jin@linux.intel.com>

Commit-ID:  5a031f887cb8d60fe87d21159c3cf82c38f55679
Gitweb:     https://git.kernel.org/tip/5a031f887cb8d60fe87d21159c3cf82c38f55679
Author:     Jin Yao <yao.jin@linux.intel.com>
AuthorDate: Wed, 10 Jan 2018 23:00:31 +0800
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 17 Jan 2018 10:23:36 -0300

perf util: Allocate time slices buffer according to number of comma

Previously we use a magic number 10 to limit the number of time slices.
It's not very good.

This patch creates a new function perf_time__range_alloc() to allocate
time slices buffer. The number of buffer entries is determined by the
number of comma in string but at least it will allocate one entry even
if no comma is found.

Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1515596433-24653-7-git-send-email-yao.jin@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/time-utils.c | 28 ++++++++++++++++++++++++++++
 tools/perf/util/time-utils.h |  2 ++
 2 files changed, 30 insertions(+)

diff --git a/tools/perf/util/time-utils.c b/tools/perf/util/time-utils.c
index 5769f97..6193b46 100644
--- a/tools/perf/util/time-utils.c
+++ b/tools/perf/util/time-utils.c
@@ -325,6 +325,34 @@ int perf_time__percent_parse_str(struct perf_time_interval *ptime_buf, int num,
 	return -1;
 }
 
+struct perf_time_interval *perf_time__range_alloc(const char *ostr, int *size)
+{
+	const char *p1, *p2;
+	int i = 1;
+	struct perf_time_interval *ptime;
+
+	/*
+	 * At least allocate one time range.
+	 */
+	if (!ostr)
+		goto alloc;
+
+	p1 = ostr;
+	while (p1 < ostr + strlen(ostr)) {
+		p2 = strchr(p1, ',');
+		if (!p2)
+			break;
+
+		p1 = p2 + 1;
+		i++;
+	}
+
+alloc:
+	*size = i;
+	ptime = calloc(i, sizeof(*ptime));
+	return ptime;
+}
+
 bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp)
 {
 	/* if time is not set don't drop sample */
diff --git a/tools/perf/util/time-utils.h b/tools/perf/util/time-utils.h
index 34d5eba..70b177d 100644
--- a/tools/perf/util/time-utils.h
+++ b/tools/perf/util/time-utils.h
@@ -16,6 +16,8 @@ int perf_time__parse_str(struct perf_time_interval *ptime, const char *ostr);
 int perf_time__percent_parse_str(struct perf_time_interval *ptime_buf, int num,
 				 const char *ostr, u64 start, u64 end);
 
+struct perf_time_interval *perf_time__range_alloc(const char *ostr, int *size);
+
 bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp);
 
 bool perf_time__ranges_skip_sample(struct perf_time_interval *ptime_buf,

  reply	other threads:[~2018-01-17 16:40 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-10 15:00 [PATCH v1 0/8] perf: Follow-up patches to improve time slice Jin Yao
2018-01-10 15:00 ` [PATCH v1 1/8] perf report: Improve error msg when no first/last sample time found Jin Yao
2018-01-17 16:34   ` [tip:perf/core] " tip-bot for Jin Yao
2018-01-10 15:00 ` [PATCH v1 2/8] perf script: " Jin Yao
2018-01-17 16:35   ` [tip:perf/core] " tip-bot for Jin Yao
2018-01-10 15:00 ` [PATCH v1 3/8] perf util: Improve error checking for time percent input Jin Yao
2018-01-17 16:35   ` [tip:perf/core] " tip-bot for Jin Yao
2018-01-10 15:00 ` [PATCH v1 4/8] perf util: Support no index time percent slice Jin Yao
2018-01-17 16:36   ` [tip:perf/core] " tip-bot for Jin Yao
2018-01-10 15:00 ` [PATCH v1 5/8] perf report: Add an indication of what time slices are used Jin Yao
2018-01-17 16:36   ` [tip:perf/core] " tip-bot for Jin Yao
2018-01-10 15:00 ` [PATCH v1 6/8] perf util: Allocate time slices buffer according to number of comma Jin Yao
2018-01-17 16:37   ` tip-bot for Jin Yao [this message]
2018-01-10 15:00 ` [PATCH v1 7/8] perf report: Remove the time slices number limitation Jin Yao
2018-01-16 14:45   ` Arnaldo Carvalho de Melo
2018-01-17 16:37   ` [tip:perf/core] " tip-bot for Jin Yao
2018-01-10 15:00 ` [PATCH v1 8/8] perf script: " Jin Yao
2018-01-17 16:37   ` [tip:perf/core] " tip-bot for Jin Yao
2018-01-16 11:55 ` [PATCH v1 0/8] perf: Follow-up patches to improve time slice Jiri Olsa
2018-01-16 12:31   ` Jin, Yao
2018-01-16 14:48   ` Arnaldo Carvalho de Melo
2018-01-17  1:18     ` Jin, Yao

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=tip-5a031f887cb8d60fe87d21159c3cf82c38f55679@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@redhat.com \
    --cc=kan.liang@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=yao.jin@linux.intel.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