@@ -58,6 +58,8 @@ struct print_state {
5858 bool metrics ;
5959 /** @metricgroups: Controls printing of metric and metric groups. */
6060 bool metricgroups ;
61+ /** @exclude_abi: Exclude PMUs with types less than PERF_TYPE_MAX except PERF_TYPE_RAW. */
62+ bool exclude_abi ;
6163 /** @last_topic: The last printed event topic. */
6264 char * last_topic ;
6365 /** @last_metricgroups: The last printed metric group. */
@@ -113,7 +115,8 @@ static void wordwrap(FILE *fp, const char *s, int start, int max, int corr)
113115 }
114116}
115117
116- static void default_print_event (void * ps , const char * topic , const char * pmu_name ,
118+ static void default_print_event (void * ps , const char * topic ,
119+ const char * pmu_name , u32 pmu_type ,
117120 const char * event_name , const char * event_alias ,
118121 const char * scale_unit __maybe_unused ,
119122 bool deprecated , const char * event_type_desc ,
@@ -130,6 +133,9 @@ static void default_print_event(void *ps, const char *topic, const char *pmu_nam
130133 if (print_state -> pmu_glob && pmu_name && !strglobmatch (pmu_name , print_state -> pmu_glob ))
131134 return ;
132135
136+ if (print_state -> exclude_abi && pmu_type < PERF_TYPE_MAX && pmu_type != PERF_TYPE_RAW )
137+ return ;
138+
133139 if (print_state -> event_glob &&
134140 (!event_name || !strglobmatch (event_name , print_state -> event_glob )) &&
135141 (!event_alias || !strglobmatch (event_alias , print_state -> event_glob )) &&
@@ -354,7 +360,8 @@ static void fix_escape_fprintf(FILE *fp, struct strbuf *buf, const char *fmt, ..
354360 fputs (buf -> buf , fp );
355361}
356362
357- static void json_print_event (void * ps , const char * topic , const char * pmu_name ,
363+ static void json_print_event (void * ps , const char * topic ,
364+ const char * pmu_name , u32 pmu_type __maybe_unused ,
358365 const char * event_name , const char * event_alias ,
359366 const char * scale_unit ,
360367 bool deprecated , const char * event_type_desc ,
@@ -647,9 +654,11 @@ int cmd_list(int argc, const char **argv)
647654 } else if (strcmp (argv [i ], "cache" ) == 0 ||
648655 strcmp (argv [i ], "hwcache" ) == 0 )
649656 print_hwcache_events (& print_cb , ps );
650- else if (strcmp (argv [i ], "pmu" ) == 0 )
657+ else if (strcmp (argv [i ], "pmu" ) == 0 ) {
658+ default_ps .exclude_abi = true;
651659 perf_pmus__print_pmu_events (& print_cb , ps );
652- else if (strcmp (argv [i ], "sdt" ) == 0 )
660+ default_ps .exclude_abi = false;
661+ } else if (strcmp (argv [i ], "sdt" ) == 0 )
653662 print_sdt_events (& print_cb , ps );
654663 else if (strcmp (argv [i ], "metric" ) == 0 || strcmp (argv [i ], "metrics" ) == 0 ) {
655664 default_ps .metricgroups = false;
0 commit comments