perf stat: Define MATCH_EVENT for easy attr checking
authorJaswinder Singh Rajput <jaswinder@kernel.org>
Wed, 1 Jul 2009 09:35:09 +0000 (15:05 +0530)
committerIngo Molnar <mingo@elte.hu>
Wed, 1 Jul 2009 11:28:38 +0000 (13:28 +0200)
MATCH_EVENT is useful:

 1. for multiple attrs checking
 2. avoid repetition of PERF_TYPE_ and PERF_COUNT_ and save space
 3. avoids line breakage

Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <1246440909.3403.5.camel@hpdv5.satnam>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
tools/perf/builtin-stat.c

index 095a90e..01cc07e 100644 (file)
@@ -96,6 +96,10 @@ static u64                   walltime_nsecs_noise;
 static u64                     runtime_cycles_avg;
 static u64                     runtime_cycles_noise;
 
+#define MATCH_EVENT(t, c, counter)                     \
+       (attrs[counter].type == PERF_TYPE_##t &&        \
+        attrs[counter].config == PERF_COUNT_##c)
+
 #define ERR_PERF_OPEN \
 "Error: counter %d, sys_perf_counter_open() syscall returned with %d (%s)\n"
 
@@ -133,13 +137,8 @@ static void create_perf_stat_counter(int counter, int pid)
  */
 static inline int nsec_counter(int counter)
 {
-       if (attrs[counter].type != PERF_TYPE_SOFTWARE)
-               return 0;
-
-       if (attrs[counter].config == PERF_COUNT_SW_CPU_CLOCK)
-               return 1;
-
-       if (attrs[counter].config == PERF_COUNT_SW_TASK_CLOCK)
+       if (MATCH_EVENT(SOFTWARE, SW_CPU_CLOCK, counter) ||
+           MATCH_EVENT(SOFTWARE, SW_TASK_CLOCK, counter))
                return 1;
 
        return 0;
@@ -194,11 +193,9 @@ static void read_counter(int counter)
        /*
         * Save the full runtime - to allow normalization during printout:
         */
-       if (attrs[counter].type == PERF_TYPE_SOFTWARE &&
-               attrs[counter].config == PERF_COUNT_SW_TASK_CLOCK)
+       if (MATCH_EVENT(SOFTWARE, SW_TASK_CLOCK, counter))
                runtime_nsecs[run_idx] = count[0];
-       if (attrs[counter].type == PERF_TYPE_HARDWARE &&
-               attrs[counter].config == PERF_COUNT_HW_CPU_CYCLES)
+       if (MATCH_EVENT(HARDWARE, HW_CPU_CYCLES, counter))
                runtime_cycles[run_idx] = count[0];
 }
 
@@ -292,9 +289,7 @@ static void nsec_printout(int counter, u64 *count, u64 *noise)
 
        fprintf(stderr, " %14.6f  %-24s", msecs, event_name(counter));
 
-       if (attrs[counter].type == PERF_TYPE_SOFTWARE &&
-               attrs[counter].config == PERF_COUNT_SW_TASK_CLOCK) {
-
+       if (MATCH_EVENT(SOFTWARE, SW_TASK_CLOCK, counter)) {
                if (walltime_nsecs_avg)
                        fprintf(stderr, " # %10.3f CPUs ",
                                (double)count[0] / (double)walltime_nsecs_avg);
@@ -307,9 +302,7 @@ static void abs_printout(int counter, u64 *count, u64 *noise)
        fprintf(stderr, " %14Ld  %-24s", count[0], event_name(counter));
 
        if (runtime_cycles_avg &&
-               attrs[counter].type == PERF_TYPE_HARDWARE &&
-                       attrs[counter].config == PERF_COUNT_HW_INSTRUCTIONS) {
-
+           MATCH_EVENT(HARDWARE, HW_INSTRUCTIONS, counter)) {
                fprintf(stderr, " # %10.3f IPC  ",
                        (double)count[0] / (double)runtime_cycles_avg);
        } else {