From: tip-bot for Arnaldo Carvalho de Melo <acme@redhat.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, eranian@google.com,
paulus@samba.org, acme@redhat.com, hpa@zytor.com,
mingo@kernel.org, peterz@infradead.org, efault@gmx.de,
namhyung@gmail.com, jolsa@redhat.com, fweisbec@gmail.com,
dsahern@gmail.com, tglx@linutronix.de
Subject: [tip:perf/core] perf trace: Count number of events for each thread and globally
Date: Fri, 26 Oct 2012 01:55:10 -0700 [thread overview]
Message-ID: <tip-ksutaz0mtejnf7e6az3ca1td@git.kernel.org> (raw)
Commit-ID: efd5745e43f3aabd95d521289e0caa0e30668cf4
Gitweb: http://git.kernel.org/tip/efd5745e43f3aabd95d521289e0caa0e30668cf4
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
AuthorDate: Wed, 17 Oct 2012 17:09:46 -0300
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 25 Oct 2012 10:40:37 -0200
perf trace: Count number of events for each thread and globally
The nr_events in trace__run was local, but we will need it in other
trace methods, move it to struct trace.
We'll also need the number of events per thread, so introduce a
nr_events method for that in struct thread_trace.
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-ksutaz0mtejnf7e6az3ca1td@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-trace.c | 20 ++++++++++++++------
1 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index ba05510..c95a3e9 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -67,6 +67,7 @@ struct thread_trace {
u64 entry_time;
u64 exit_time;
bool entry_pending;
+ unsigned long nr_events;
char *entry_str;
};
@@ -77,16 +78,21 @@ static struct thread_trace *thread_trace__new(void)
static struct thread_trace *thread__trace(struct thread *thread)
{
+ struct thread_trace *ttrace;
+
if (thread == NULL)
goto fail;
if (thread->priv == NULL)
thread->priv = thread_trace__new();
-
+
if (thread->priv == NULL)
goto fail;
- return thread->priv;
+ ttrace = thread->priv;
+ ++ttrace->nr_events;
+
+ return ttrace;
fail:
color_fprintf(stdout, PERF_COLOR_RED,
"WARNING: not enough memory, dropping samples!\n");
@@ -102,6 +108,7 @@ struct trace {
struct perf_record_opts opts;
struct machine host;
u64 base_time;
+ unsigned long nr_events;
bool multiple_threads;
double duration_filter;
};
@@ -386,7 +393,8 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
{
struct perf_evlist *evlist = perf_evlist__new(NULL, NULL);
struct perf_evsel *evsel;
- int err = -1, i, nr_events = 0, before;
+ int err = -1, i;
+ unsigned long before;
const bool forks = argc > 0;
if (evlist == NULL) {
@@ -444,7 +452,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
trace->multiple_threads = evlist->threads->map[0] == -1 || evlist->threads->nr > 1;
again:
- before = nr_events;
+ before = trace->nr_events;
for (i = 0; i < evlist->nr_mmaps; i++) {
union perf_event *event;
@@ -454,7 +462,7 @@ again:
tracepoint_handler handler;
struct perf_sample sample;
- ++nr_events;
+ ++trace->nr_events;
err = perf_evlist__parse_sample(evlist, event, &sample);
if (err) {
@@ -495,7 +503,7 @@ again:
}
}
- if (nr_events == before) {
+ if (trace->nr_events == before) {
if (done)
goto out_delete_evlist;
reply other threads:[~2012-10-26 8:55 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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-ksutaz0mtejnf7e6az3ca1td@git.kernel.org \
--to=acme@redhat.com \
--cc=dsahern@gmail.com \
--cc=efault@gmx.de \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@gmail.com \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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.