[tip:perf/core] perf list: Do event name substring search as last resort when no events found

2015-10-03 Thread tip-bot for Arnaldo Carvalho de Melo
Commit-ID:  dbc67409fa912ba063dfa956af0543af1258fc97
Gitweb: http://git.kernel.org/tip/dbc67409fa912ba063dfa956af0543af1258fc97
Author: Arnaldo Carvalho de Melo 
AuthorDate: Thu, 1 Oct 2015 12:12:22 -0300
Committer:  Arnaldo Carvalho de Melo 
CommitDate: Thu, 1 Oct 2015 12:12:22 -0300

perf list: Do event name substring search as last resort when no events found

Before:

  # perf list _alloc_ | head -10
  #

After:

  # perf list _alloc_ | head -10
ext4:ext4_alloc_da_blocks  [Tracepoint event]
ext4:ext4_get_implied_cluster_alloc_exit   [Tracepoint event]
kmem:kmem_cache_alloc_node [Tracepoint event]
kmem:mm_page_alloc_extfrag [Tracepoint event]
kmem:mm_page_alloc_zone_locked [Tracepoint event]
xen:xen_mmu_alloc_ptpage   [Tracepoint event]
  #

And it works for all types of events:

  # perf list br

  List of pre-defined events (to be used in -e):

branch-instructions OR branches[Hardware event]
branch-misses  [Hardware event]

branch-load-misses [Hardware cache event]
branch-loads   [Hardware cache event]

branch-instructions OR cpu/branch-instructions/[Kernel PMU event]
branch-misses OR cpu/branch-misses/[Kernel PMU event]

filelock:break_lease_block [Tracepoint event]
filelock:break_lease_noblock   [Tracepoint event]
filelock:break_lease_unblock   [Tracepoint event]
syscalls:sys_enter_brk [Tracepoint event]
syscalls:sys_exit_brk  [Tracepoint event]

  #

Suggested-by: Ingo Molnar 
Cc: Adrian Hunter 
Cc: Borislav Petkov 
Cc: David Ahern 
Cc: Frederic Weisbecker 
Cc: Jiri Olsa 
Cc: Namhyung Kim 
Cc: Stephane Eranian 
Cc: Wang Nan 
Link: http://lkml.kernel.org/n/tip-qieivl18jdemoaghgndj3...@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo 
---
 tools/perf/Documentation/perf-list.txt |  2 ++
 tools/perf/builtin-list.c  | 18 --
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/tools/perf/Documentation/perf-list.txt 
b/tools/perf/Documentation/perf-list.txt
index bada893..ad60c6e 100644
--- a/tools/perf/Documentation/perf-list.txt
+++ b/tools/perf/Documentation/perf-list.txt
@@ -125,6 +125,8 @@ To limit the list use:
 . If none of the above is matched, it will apply the supplied glob to all
   events, printing the ones that match.
 
+. As a last resort, it will do a substring search in all event names.
+
 One or more types can be used at the same time, listing the events for the
 types specified.
 
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index 6024140..bf679e2 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -45,6 +45,8 @@ int cmd_list(int argc, const char **argv, const char *prefix 
__maybe_unused)
}
 
for (i = 0; i < argc; ++i) {
+   char *sep, *s;
+
if (strcmp(argv[i], "tracepoint") == 0)
print_tracepoint_events(NULL, NULL, raw_dump);
else if (strcmp(argv[i], "hw") == 0 ||
@@ -60,8 +62,7 @@ int cmd_list(int argc, const char **argv, const char *prefix 
__maybe_unused)
print_hwcache_events(NULL, raw_dump);
else if (strcmp(argv[i], "pmu") == 0)
print_pmu_events(NULL, raw_dump);
-   else {
-   char *sep = strchr(argv[i], ':'), *s;
+   else if ((sep = strchr(argv[i], ':')) != NULL) {
int sep_idx;
 
if (sep == NULL) {
@@ -76,6 +77,19 @@ int cmd_list(int argc, const char **argv, const char *prefix 
__maybe_unused)
s[sep_idx] = '\0';
print_tracepoint_events(s, s + sep_idx + 1, raw_dump);
free(s);
+   } else {
+   if (asprintf(, "*%s*", argv[i]) < 0) {
+   printf("Critical: Not enough memory! Trying to 
continue...\n");
+   continue;
+   }
+   print_symbol_events(s, PERF_TYPE_HARDWARE,
+   event_symbols_hw, 
PERF_COUNT_HW_MAX, raw_dump);
+   print_symbol_events(s, PERF_TYPE_SOFTWARE,
+   event_symbols_sw, 
PERF_COUNT_SW_MAX, raw_dump);
+   print_hwcache_events(s, raw_dump);
+   print_pmu_events(s, raw_dump);
+   print_tracepoint_events(NULL, s, raw_dump);
+   free(s);
}
}
return 0;
--
To unsubscribe from this list: send 

[tip:perf/core] perf list: Do event name substring search as last resort when no events found

2015-10-03 Thread tip-bot for Arnaldo Carvalho de Melo
Commit-ID:  dbc67409fa912ba063dfa956af0543af1258fc97
Gitweb: http://git.kernel.org/tip/dbc67409fa912ba063dfa956af0543af1258fc97
Author: Arnaldo Carvalho de Melo 
AuthorDate: Thu, 1 Oct 2015 12:12:22 -0300
Committer:  Arnaldo Carvalho de Melo 
CommitDate: Thu, 1 Oct 2015 12:12:22 -0300

perf list: Do event name substring search as last resort when no events found

Before:

  # perf list _alloc_ | head -10
  #

After:

  # perf list _alloc_ | head -10
ext4:ext4_alloc_da_blocks  [Tracepoint event]
ext4:ext4_get_implied_cluster_alloc_exit   [Tracepoint event]
kmem:kmem_cache_alloc_node [Tracepoint event]
kmem:mm_page_alloc_extfrag [Tracepoint event]
kmem:mm_page_alloc_zone_locked [Tracepoint event]
xen:xen_mmu_alloc_ptpage   [Tracepoint event]
  #

And it works for all types of events:

  # perf list br

  List of pre-defined events (to be used in -e):

branch-instructions OR branches[Hardware event]
branch-misses  [Hardware event]

branch-load-misses [Hardware cache event]
branch-loads   [Hardware cache event]

branch-instructions OR cpu/branch-instructions/[Kernel PMU event]
branch-misses OR cpu/branch-misses/[Kernel PMU event]

filelock:break_lease_block [Tracepoint event]
filelock:break_lease_noblock   [Tracepoint event]
filelock:break_lease_unblock   [Tracepoint event]
syscalls:sys_enter_brk [Tracepoint event]
syscalls:sys_exit_brk  [Tracepoint event]

  #

Suggested-by: Ingo Molnar 
Cc: Adrian Hunter 
Cc: Borislav Petkov 
Cc: David Ahern 
Cc: Frederic Weisbecker 
Cc: Jiri Olsa 
Cc: Namhyung Kim 
Cc: Stephane Eranian 
Cc: Wang Nan 
Link: http://lkml.kernel.org/n/tip-qieivl18jdemoaghgndj3...@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo 
---
 tools/perf/Documentation/perf-list.txt |  2 ++
 tools/perf/builtin-list.c  | 18 --
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/tools/perf/Documentation/perf-list.txt 
b/tools/perf/Documentation/perf-list.txt
index bada893..ad60c6e 100644
--- a/tools/perf/Documentation/perf-list.txt
+++ b/tools/perf/Documentation/perf-list.txt
@@ -125,6 +125,8 @@ To limit the list use:
 . If none of the above is matched, it will apply the supplied glob to all
   events, printing the ones that match.
 
+. As a last resort, it will do a substring search in all event names.
+
 One or more types can be used at the same time, listing the events for the
 types specified.
 
diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c
index 6024140..bf679e2 100644
--- a/tools/perf/builtin-list.c
+++ b/tools/perf/builtin-list.c
@@ -45,6 +45,8 @@ int cmd_list(int argc, const char **argv, const char *prefix 
__maybe_unused)
}
 
for (i = 0; i < argc; ++i) {
+   char *sep, *s;
+
if (strcmp(argv[i], "tracepoint") == 0)
print_tracepoint_events(NULL, NULL, raw_dump);
else if (strcmp(argv[i], "hw") == 0 ||
@@ -60,8 +62,7 @@ int cmd_list(int argc, const char **argv, const char *prefix 
__maybe_unused)
print_hwcache_events(NULL, raw_dump);
else if (strcmp(argv[i], "pmu") == 0)
print_pmu_events(NULL, raw_dump);
-   else {
-   char *sep = strchr(argv[i], ':'), *s;
+   else if ((sep = strchr(argv[i], ':')) != NULL) {
int sep_idx;
 
if (sep == NULL) {
@@ -76,6 +77,19 @@ int cmd_list(int argc, const char **argv, const char *prefix 
__maybe_unused)
s[sep_idx] = '\0';
print_tracepoint_events(s, s + sep_idx + 1, raw_dump);
free(s);
+   } else {
+   if (asprintf(, "*%s*", argv[i]) < 0) {
+   printf("Critical: Not enough memory! Trying to 
continue...\n");
+   continue;
+   }
+   print_symbol_events(s, PERF_TYPE_HARDWARE,
+   event_symbols_hw, 
PERF_COUNT_HW_MAX, raw_dump);
+   print_symbol_events(s, PERF_TYPE_SOFTWARE,
+   event_symbols_sw, 
PERF_COUNT_SW_MAX, raw_dump);
+   print_hwcache_events(s, raw_dump);
+