|
@@ -799,7 +799,8 @@ static const char * const event_type_descriptors[] = {
|
|
|
* Print the events from <debugfs_mount_point>/tracing/events
|
|
|
*/
|
|
|
|
|
|
-void print_tracepoint_events(const char *subsys_glob, const char *event_glob)
|
|
|
+void print_tracepoint_events(const char *subsys_glob, const char *event_glob,
|
|
|
+ bool name_only)
|
|
|
{
|
|
|
DIR *sys_dir, *evt_dir;
|
|
|
struct dirent *sys_next, *evt_next, sys_dirent, evt_dirent;
|
|
@@ -829,6 +830,11 @@ void print_tracepoint_events(const char *subsys_glob, const char *event_glob)
|
|
|
!strglobmatch(evt_dirent.d_name, event_glob))
|
|
|
continue;
|
|
|
|
|
|
+ if (name_only) {
|
|
|
+ printf("%s:%s ", sys_dirent.d_name, evt_dirent.d_name);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
snprintf(evt_path, MAXPATHLEN, "%s:%s",
|
|
|
sys_dirent.d_name, evt_dirent.d_name);
|
|
|
printf(" %-50s [%s]\n", evt_path,
|
|
@@ -906,7 +912,7 @@ void print_events_type(u8 type)
|
|
|
__print_events_type(type, event_symbols_hw, PERF_COUNT_HW_MAX);
|
|
|
}
|
|
|
|
|
|
-int print_hwcache_events(const char *event_glob)
|
|
|
+int print_hwcache_events(const char *event_glob, bool name_only)
|
|
|
{
|
|
|
unsigned int type, op, i, printed = 0;
|
|
|
char name[64];
|
|
@@ -923,8 +929,11 @@ int print_hwcache_events(const char *event_glob)
|
|
|
if (event_glob != NULL && !strglobmatch(name, event_glob))
|
|
|
continue;
|
|
|
|
|
|
- printf(" %-50s [%s]\n", name,
|
|
|
- event_type_descriptors[PERF_TYPE_HW_CACHE]);
|
|
|
+ if (name_only)
|
|
|
+ printf("%s ", name);
|
|
|
+ else
|
|
|
+ printf(" %-50s [%s]\n", name,
|
|
|
+ event_type_descriptors[PERF_TYPE_HW_CACHE]);
|
|
|
++printed;
|
|
|
}
|
|
|
}
|
|
@@ -934,7 +943,8 @@ int print_hwcache_events(const char *event_glob)
|
|
|
}
|
|
|
|
|
|
static void print_symbol_events(const char *event_glob, unsigned type,
|
|
|
- struct event_symbol *syms, unsigned max)
|
|
|
+ struct event_symbol *syms, unsigned max,
|
|
|
+ bool name_only)
|
|
|
{
|
|
|
unsigned i, printed = 0;
|
|
|
char name[MAX_NAME_LEN];
|
|
@@ -946,6 +956,11 @@ static void print_symbol_events(const char *event_glob, unsigned type,
|
|
|
(syms->alias && strglobmatch(syms->alias, event_glob))))
|
|
|
continue;
|
|
|
|
|
|
+ if (name_only) {
|
|
|
+ printf("%s ", syms->symbol);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
if (strlen(syms->alias))
|
|
|
snprintf(name, MAX_NAME_LEN, "%s OR %s", syms->symbol, syms->alias);
|
|
|
else
|
|
@@ -963,39 +978,42 @@ static void print_symbol_events(const char *event_glob, unsigned type,
|
|
|
/*
|
|
|
* Print the help text for the event symbols:
|
|
|
*/
|
|
|
-void print_events(const char *event_glob)
|
|
|
+void print_events(const char *event_glob, bool name_only)
|
|
|
{
|
|
|
-
|
|
|
- printf("\n");
|
|
|
- printf("List of pre-defined events (to be used in -e):\n");
|
|
|
+ if (!name_only) {
|
|
|
+ printf("\n");
|
|
|
+ printf("List of pre-defined events (to be used in -e):\n");
|
|
|
+ }
|
|
|
|
|
|
print_symbol_events(event_glob, PERF_TYPE_HARDWARE,
|
|
|
- event_symbols_hw, PERF_COUNT_HW_MAX);
|
|
|
+ event_symbols_hw, PERF_COUNT_HW_MAX, name_only);
|
|
|
|
|
|
print_symbol_events(event_glob, PERF_TYPE_SOFTWARE,
|
|
|
- event_symbols_sw, PERF_COUNT_SW_MAX);
|
|
|
+ event_symbols_sw, PERF_COUNT_SW_MAX, name_only);
|
|
|
|
|
|
- print_hwcache_events(event_glob);
|
|
|
+ print_hwcache_events(event_glob, name_only);
|
|
|
|
|
|
if (event_glob != NULL)
|
|
|
return;
|
|
|
|
|
|
- printf("\n");
|
|
|
- printf(" %-50s [%s]\n",
|
|
|
- "rNNN",
|
|
|
- event_type_descriptors[PERF_TYPE_RAW]);
|
|
|
- printf(" %-50s [%s]\n",
|
|
|
- "cpu/t1=v1[,t2=v2,t3 ...]/modifier",
|
|
|
- event_type_descriptors[PERF_TYPE_RAW]);
|
|
|
- printf(" (see 'perf list --help' on how to encode it)\n");
|
|
|
- printf("\n");
|
|
|
-
|
|
|
- printf(" %-50s [%s]\n",
|
|
|
- "mem:<addr>[:access]",
|
|
|
+ if (!name_only) {
|
|
|
+ printf("\n");
|
|
|
+ printf(" %-50s [%s]\n",
|
|
|
+ "rNNN",
|
|
|
+ event_type_descriptors[PERF_TYPE_RAW]);
|
|
|
+ printf(" %-50s [%s]\n",
|
|
|
+ "cpu/t1=v1[,t2=v2,t3 ...]/modifier",
|
|
|
+ event_type_descriptors[PERF_TYPE_RAW]);
|
|
|
+ printf(" (see 'perf list --help' on how to encode it)\n");
|
|
|
+ printf("\n");
|
|
|
+
|
|
|
+ printf(" %-50s [%s]\n",
|
|
|
+ "mem:<addr>[:access]",
|
|
|
event_type_descriptors[PERF_TYPE_BREAKPOINT]);
|
|
|
- printf("\n");
|
|
|
+ printf("\n");
|
|
|
+ }
|
|
|
|
|
|
- print_tracepoint_events(NULL, NULL);
|
|
|
+ print_tracepoint_events(NULL, NULL, name_only);
|
|
|
}
|
|
|
|
|
|
int parse_events__is_hardcoded_term(struct parse_events__term *term)
|