perf jevents: Provide better path information for broken JSON
If the JSON input to jevents.py is broken it can be problematic to work out which particular JSON file is broken. When processing files catch exceptions that occur that re-raise the exception with path details added. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Benjamin Gray <bgray@linux.ibm.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sandipan Das <sandipan.das@amd.com> Cc: Stephane Eranian <eranian@google.com> Cc: Xu Yang <xu.yang_2@nxp.com> Link: https://lore.kernel.org/r/20241114172309.840241-1-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>pull/964/merge
parent
91a5bffa56
commit
26f45ec8f0
|
|
@ -464,12 +464,16 @@ def preprocess_arch_std_files(archpath: str) -> None:
|
|||
"""Read in all architecture standard events."""
|
||||
global _arch_std_events
|
||||
for item in os.scandir(archpath):
|
||||
if item.is_file() and item.name.endswith('.json'):
|
||||
if not item.is_file() or not item.name.endswith('.json'):
|
||||
continue
|
||||
try:
|
||||
for event in read_json_events(item.path, topic=''):
|
||||
if event.name:
|
||||
_arch_std_events[event.name.lower()] = event
|
||||
if event.metric_name:
|
||||
_arch_std_events[event.metric_name.lower()] = event
|
||||
except Exception as e:
|
||||
raise RuntimeError(f'Failure processing \'{item.name}\' in \'{archpath}\'') from e
|
||||
|
||||
|
||||
def add_events_table_entries(item: os.DirEntry, topic: str) -> None:
|
||||
|
|
@ -1255,7 +1259,10 @@ def main() -> None:
|
|||
item_path = '/'.join(parents) + ('/' if len(parents) > 0 else '') + item.name
|
||||
if 'test' not in item_path and 'common' not in item_path and item_path not in _args.model.split(','):
|
||||
continue
|
||||
action(parents, item)
|
||||
try:
|
||||
action(parents, item)
|
||||
except Exception as e:
|
||||
raise RuntimeError(f'Action failure for \'{item.name}\' in {parents}') from e
|
||||
if item.is_dir():
|
||||
ftw(item.path, parents + [item.name], action)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue