From 201aa2cb7bc8723765afd84a5d3972248af0f0a1 Mon Sep 17 00:00:00 2001 From: John Garry Date: Thu, 10 Dec 2020 19:45:14 +0000 Subject: [PATCH] perf jevents: Add system events table for empty mapping For architectures which have no PMU event lists - like arm32 - an empty mapping table is printed. This is how the "pmu_events_map" symbol - referenced in util/pmu.c::perf_pmu__find_map() - is created for those architectures. Since pmu-events.c now includes a new table - "pmu_sys_event_tables" - which is also referenced from util/pmu.c, also add this for the empty mappings. Signed-off-by: John Garry diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c index e930096ad713..28e20d9ec0f5 100644 --- a/tools/perf/pmu-events/jevents.c +++ b/tools/perf/pmu-events/jevents.c @@ -816,19 +816,30 @@ static void print_mapping_test_table(FILE *outfp) fprintf(outfp, "},\n"); } +static void print_system_event_mapping_table_prefix(FILE *outfp) +{ + fprintf(outfp, "\nstruct pmu_sys_events pmu_sys_event_tables[] = {"); +} + +static void print_system_event_mapping_table_suffix(FILE *outfp) +{ + fprintf(outfp, "\n\t{\n\t\t.table = 0\n\t},"); + + fprintf(outfp, "\n};\n"); +} + static int process_system_event_tables(FILE *outfp) { struct sys_event_table *sys_event_table; - fprintf(outfp, "\nstruct pmu_sys_events pmu_sys_event_tables[] = {"); + print_system_event_mapping_table_prefix(outfp); list_for_each_entry(sys_event_table, &sys_event_tables, list) { fprintf(outfp, "\n\t{\n\t\t.table = %s,\n\t},", sys_event_table->soc_id); } - fprintf(outfp, "\n\t{\n\t\t.table = 0\n\t},"); - fprintf(outfp, "\n};\n"); + print_system_event_mapping_table_suffix(outfp); return 0; } @@ -938,6 +949,9 @@ static void create_empty_mapping(const char *output_file) fprintf(outfp, "#include \"pmu-events/pmu-events.h\"\n"); print_mapping_table_prefix(outfp); print_mapping_table_suffix(outfp); + print_system_event_mapping_table_prefix(outfp); + print_system_event_mapping_table_suffix(outfp); + fclose(outfp); } -- 2.26.2