From: Jaswinder Singh Rajput <jaswinder@kernel.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: Arjan van de Ven <arjan@infradead.org>,
Paul Mackerras <paulus@samba.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Anton Blanchard <anton@samba.org>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
x86 maintainers <x86@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: [PATCH 3/3 -tip] perf list: avoid replicating functions
Date: Fri, 03 Jul 2009 17:47:21 +0530 [thread overview]
Message-ID: <1246623441.2322.36.camel@jaswinder.satnam> (raw)
In-Reply-To: <20090703093032.GI3902@elte.hu>
On Fri, 2009-07-03 at 11:30 +0200, Ingo Molnar wrote:
> * Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:
>
> > > $ ./perf list shows vector events like :
> > >
> > > vec-adds OR add [Hardware vector event]
> > > vec-muls OR multiply [Hardware vector event]
> > > vec-divs OR divide [Hardware vector event]
> > > vec-idle-cycles OR vec-empty-cycles [Hardware vector event]
> > > vec-stall-cycles OR vec-busy-cycles [Hardware vector event]
> > > vec-ops OR vec-operations [Hardware vector event]
>
> btw., why does this printout SHOUT the 'or'? It's certainly not an
> important piece of information. Something like:
>
> vec-adds | add [Hardware vector event]
> vec-muls | multiply [Hardware vector event]
> vec-divs | divide [Hardware vector event]
> vec-idle-cycles | vec-empty-cycles [Hardware vector event]
> vec-stall-cycles | vec-busy-cycles [Hardware vector event]
> vec-ops | vec-operations [Hardware vector event]
>
> looks better on all levels.
>
I prepared this patch incrementally on :
[PATCH 1/2 -tip] perf_counter: Add generalized hardware vectored co-processor support for AMD and Intel Corei7/Nehalem
[PATCH 2/2 -tip] perf_counter: Add generalized hardware interrupt support for AMD and Intel Corei7/Nehalem, Core2 and Atom
[PATCH 3/3] perf list: avoid replicating functions
vector and interrupt can use same function made for hardware and software generic events.
Also replaced 'OR' with '|'
$ ./perf list
List of pre-defined events (to be used in -e):
cpu-cycles | cycles [Hardware event]
instructions [Hardware event]
cache-references [Hardware event]
cache-misses [Hardware event]
branch-instructions | branches [Hardware event]
branch-misses [Hardware event]
bus-cycles [Hardware event]
cpu-clock [Software event]
task-clock [Software event]
page-faults | faults [Software event]
minor-faults [Software event]
major-faults [Software event]
context-switches | cs [Software event]
cpu-migrations | migrations [Software event]
L1-d$-loads [Hardware cache event]
L1-d$-load-misses [Hardware cache event]
L1-d$-stores [Hardware cache event]
L1-d$-store-misses [Hardware cache event]
L1-d$-prefetches [Hardware cache event]
L1-d$-prefetch-misses [Hardware cache event]
L1-i$-loads [Hardware cache event]
L1-i$-load-misses [Hardware cache event]
L1-i$-prefetches [Hardware cache event]
L1-i$-prefetch-misses [Hardware cache event]
LLC-loads [Hardware cache event]
LLC-load-misses [Hardware cache event]
LLC-stores [Hardware cache event]
LLC-store-misses [Hardware cache event]
LLC-prefetches [Hardware cache event]
LLC-prefetch-misses [Hardware cache event]
dTLB-loads [Hardware cache event]
dTLB-load-misses [Hardware cache event]
dTLB-stores [Hardware cache event]
dTLB-store-misses [Hardware cache event]
dTLB-prefetches [Hardware cache event]
dTLB-prefetch-misses [Hardware cache event]
iTLB-loads [Hardware cache event]
iTLB-load-misses [Hardware cache event]
branch-loads [Hardware cache event]
branch-load-misses [Hardware cache event]
vec-adds | add [Hardware vector event]
vec-muls | multiply [Hardware vector event]
vec-divs | divide [Hardware vector event]
vec-idle-cycles | vec-empty-cycles [Hardware vector event]
vec-stall-cycles | vec-busy-cycles [Hardware vector event]
vec-ops | vec-operations [Hardware vector event]
interrupts | interrupt [Hardware interrupt event]
int-mask-cycles | masked [Hardware interrupt event]
int-pending-mask-cycles [Hardware interrupt event]
rNNN [Hardware raw event]
Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
---
tools/perf/util/parse-events.c | 83 +++++++++++++++++-----------------------
1 files changed, 35 insertions(+), 48 deletions(-)
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index d085b8f..c2a7dc2 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -494,46 +494,51 @@ int parse_events(const struct option *opt __used, const char *str, int unset __u
return 0;
}
-static const char * const event_type_descriptors[] = {
- "",
+static const char *event_types[PERF_TYPE_MAX] = {
"Hardware event",
"Software event",
"Tracepoint event",
"Hardware cache event",
+ "Hardware raw event",
"Hardware vector event",
"Hardware interrupt event",
};
-/*
- * Print the help text for the event symbols:
- */
-void print_events(void)
+static void print_desc(struct event_symbol *syms, unsigned int size)
{
- struct event_symbol *syms = event_symbols;
- unsigned int i, type, op, prev_type = -1;
+ unsigned int i, type, prev_type = -1;
char name[40];
- fprintf(stderr, "\n");
- fprintf(stderr, "List of pre-defined events (to be used in -e):\n");
-
- for (i = 0; i < ARRAY_SIZE(event_symbols); i++, syms++) {
- type = syms->type + 1;
- if (type > ARRAY_SIZE(event_type_descriptors))
- type = 0;
-
- if (type != prev_type)
+ for (i = 0; i < size; i++, syms++) {
+ type = syms->type;
+ if (type != prev_type) {
+ prev_type = type;
fprintf(stderr, "\n");
+ }
if (strlen(syms->alias))
- sprintf(name, "%s OR %s", syms->symbol, syms->alias);
+ sprintf(name, "%s | %s", syms->symbol, syms->alias);
else
strcpy(name, syms->symbol);
- fprintf(stderr, " %-40s [%s]\n", name,
- event_type_descriptors[type]);
- prev_type = type;
+ fprintf(stderr, " %-40s [%s]\n", name, event_types[type]);
}
+}
+
+/*
+ * Print the help text for the event symbols:
+ */
+void print_events(void)
+{
+ unsigned int type, op, r;
+
+ fprintf(stderr, "\n");
+ fprintf(stderr, "List of pre-defined events (to be used in -e):\n");
+ /* List hardware and software event descriptors */
+ print_desc(event_symbols, ARRAY_SIZE(event_symbols));
+
+ /* List hardware cache event descriptors */
fprintf(stderr, "\n");
for (type = 0; type < PERF_COUNT_HW_CACHE_MAX; type++) {
for (op = 0; op < PERF_COUNT_HW_CACHE_OP_MAX; op++) {
@@ -541,41 +546,23 @@ void print_events(void)
if (!is_cache_op_valid(type, op))
continue;
- for (i = 0; i < PERF_COUNT_HW_CACHE_RESULT_MAX; i++) {
+ for (r = 0; r < PERF_COUNT_HW_CACHE_RESULT_MAX; r++) {
fprintf(stderr, " %-40s [%s]\n",
- event_cache_name(type, op, i),
- event_type_descriptors[4]);
+ event_cache_name(type, op, r),
+ event_types[PERF_TYPE_HW_CACHE]);
}
}
}
- fprintf(stderr, "\n");
- syms = vector_event_symbols;
- type = syms->type;
- for (i = 0; i < ARRAY_SIZE(vector_event_symbols); i++, syms++) {
- if (strlen(syms->alias))
- sprintf(name, "%s OR %s", syms->symbol, syms->alias);
- else
- strcpy(name, syms->symbol);
- fprintf(stderr, " %-40s [%s]\n", name,
- event_type_descriptors[type]);
- }
+ /* List hardware vectored co-processor event descriptors */
+ print_desc(vector_event_symbols, ARRAY_SIZE(vector_event_symbols));
- fprintf(stderr, "\n");
- syms = interrupt_event_symbols;
- type = syms->type;
- for (i = 0; i < ARRAY_SIZE(interrupt_event_symbols); i++, syms++) {
- if (strlen(syms->alias))
- sprintf(name, "%s OR %s", syms->symbol, syms->alias);
- else
- strcpy(name, syms->symbol);
- fprintf(stderr, " %-40s [%s]\n", name,
- event_type_descriptors[type]);
- }
+ /* List hardware interrupt event descriptors */
+ print_desc(interrupt_event_symbols, ARRAY_SIZE(interrupt_event_symbols));
+ /* List hardware raw event descriptors */
fprintf(stderr, "\n");
- fprintf(stderr, " %-40s [raw hardware event descriptor]\n",
- "rNNN");
+ fprintf(stderr, " %-40s [%s]\n", "rNNN", event_types[PERF_TYPE_RAW]);
fprintf(stderr, "\n");
exit(129);
--
1.6.2.5
next prev parent reply other threads:[~2009-07-03 12:18 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-01 9:33 [GIT-PULL -tip][PATCH 0/6] perf_counter patches Jaswinder Singh Rajput
2009-07-01 9:35 ` [PATCH 1/6 -tip] perf stat: define MATCH_EVENT for easy attrs checking Jaswinder Singh Rajput
2009-07-01 9:36 ` [PATCH 2/6 -tip] perf stat: treat same behaviour for all CYCLES and CLOCKS Jaswinder Singh Rajput
2009-07-01 9:37 ` [PATCH 3/6 -tip] perf_counter: Add Generalized Hardware vectored co-processor support for AMD Jaswinder Singh Rajput
2009-07-01 9:38 ` [PATCH 4/6 -tip] perf_counter: Add Generalized Hardware interrupt " Jaswinder Singh Rajput
2009-07-01 9:38 ` [PATCH 5/6 -tip] perf_counter: Add hardware vector events for nehalem Jaswinder Singh Rajput
2009-07-01 9:40 ` [PATCH 6/6 -tip] perf_counter: Add hardware interrupt events for nehalem, core2 and atom Jaswinder Singh Rajput
2009-07-01 11:24 ` [PATCH 4/6 -tip] perf_counter: Add Generalized Hardware interrupt support for AMD Ingo Molnar
2009-07-03 12:01 ` Jaswinder Singh Rajput
2009-07-04 10:22 ` Ingo Molnar
2009-07-04 14:17 ` Jaswinder Singh Rajput
2009-07-05 1:11 ` Ingo Molnar
2009-07-05 4:29 ` Jaswinder Singh Rajput
2009-07-05 8:04 ` Ingo Molnar
2009-07-05 9:01 ` Jaswinder Singh Rajput
2009-07-05 9:55 ` Jaswinder Singh Rajput
2009-07-01 11:20 ` [PATCH 3/6 -tip] perf_counter: Add Generalized Hardware vectored co-processor " Ingo Molnar
2009-07-01 11:27 ` Ingo Molnar
2009-07-01 11:40 ` Jaswinder Singh Rajput
2009-07-01 11:49 ` Ingo Molnar
2009-07-02 9:44 ` [PATCH 1/2 -tip] perf_counter: Add generalized hardware vectored co-processor support for AMD and Intel Corei7/Nehalem Jaswinder Singh Rajput
2009-07-02 9:45 ` [PATCH 2/2 -tip] perf_counter: Add generalized hardware interrupt support for AMD and Intel Corei7/Nehalem, Core2 and Atom Jaswinder Singh Rajput
2009-07-03 10:33 ` Ingo Molnar
2009-07-03 7:38 ` [PATCH 1/2 -tip] perf_counter: Add generalized hardware vectored co-processor support for AMD and Intel Corei7/Nehalem Jaswinder Singh Rajput
2009-07-03 9:30 ` Ingo Molnar
2009-07-03 10:10 ` Jaswinder Singh Rajput
2009-07-03 12:17 ` Jaswinder Singh Rajput [this message]
2009-07-04 9:50 ` [PATCH 3/3 -tip] perf list: avoid replicating functions Ingo Molnar
2009-07-03 10:29 ` [PATCH 1/2 -tip] perf_counter: Add generalized hardware vectored co-processor support for AMD and Intel Corei7/Nehalem Ingo Molnar
2009-07-03 11:55 ` Jaswinder Singh Rajput
2009-07-03 12:49 ` Jaswinder Singh Rajput
2009-07-03 13:25 ` Jaswinder Singh Rajput
2009-07-04 10:03 ` Ingo Molnar
2009-07-04 14:05 ` Jaswinder Singh Rajput
2009-07-04 9:49 ` Ingo Molnar
2009-07-04 13:54 ` Jaswinder Singh Rajput
2009-07-01 11:39 ` [PATCH 2/6 -tip] perf stat: treat same behaviour for all CYCLES and CLOCKS Ingo Molnar
2009-07-03 8:18 ` Paul Mackerras
2009-07-03 8:27 ` Ingo Molnar
2009-07-01 11:30 ` [tip:perfcounters/urgent] perf stat: Define MATCH_EVENT for easy attr checking tip-bot for Jaswinder Singh Rajput
2009-07-01 11:45 ` [GIT-PULL -tip][PATCH 0/6] perf_counter patches Ingo Molnar
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=1246623441.2322.36.camel@jaswinder.satnam \
--to=jaswinder@kernel.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=anton@samba.org \
--cc=arjan@infradead.org \
--cc=benh@kernel.crashing.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=x86@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox