perf stat: Tell user about unsupported events in the list
David Ahern [Fri, 29 Apr 2011 22:04:15 +0000 (16:04 -0600)]
Similar to perf-record, tell user about unsupported events
that will not be counted if invoked in verbose mode.

e.g.,

 $ perf stat -e dTLB-prefetch-misses -v -- sleep 1
 dTLB-prefetch-misses event is not supported by the kernel.
 dTLB-prefetch-misses: 0 0 0

 Performance counter stats for 'sleep 1':

     <not counted> dTLB-prefetch-misses

        1.001884783  seconds time elapsed

Signed-off-by: David Ahern <dsahern@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/r/1304114655-10600-1-git-send-email-dsahern@gmail.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>

tools/perf/builtin-stat.c

index c8b535b..602c3c9 100644 (file)
@@ -377,8 +377,12 @@ static int run_perf_stat(int argc __used, const char **argv)
 
        list_for_each_entry(counter, &evsel_list->entries, node) {
                if (create_perf_stat_counter(counter) < 0) {
-                       if (errno == EINVAL || errno == ENOSYS || errno == ENOENT)
+                       if (errno == EINVAL || errno == ENOSYS || errno == ENOENT) {
+                               if (verbose)
+                                       ui__warning("%s event is not supported by the kernel.\n",
+                                                   event_name(counter));
                                continue;
+                       }
 
                        if (errno == EPERM || errno == EACCES) {
                                error("You may not have permission to collect %sstats.\n"