diff options
author | Namhyung Kim <namhyung@kernel.org> | 2023-08-25 17:25:50 +0200 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2023-08-29 19:16:14 +0200 |
commit | baec60800dd4a379546f3ba311574d907a01a77d (patch) | |
tree | 7daa193bb1b98fe5b1286195293661b6eef2be09 /tools/lib | |
parent | perf tools: Handle old data in PERF_RECORD_ATTR (diff) | |
download | linux-baec60800dd4a379546f3ba311574d907a01a77d.tar.xz linux-baec60800dd4a379546f3ba311574d907a01a77d.zip |
libperf: Add perf_record_header_attr_id()
The HEADER_ATTR record has an event attr followed by the id array. But
perf data from a different version could have different size of attr.
So it cannot just use event->attr.id to access the array. Let's add the
perf_record_header_attr_id() macro to calculate the start of the array.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20230825152552.112913-2-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib')
-rw-r--r-- | tools/lib/perf/include/perf/event.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/tools/lib/perf/include/perf/event.h b/tools/lib/perf/include/perf/event.h index ba2dcf64f4e6..e563dd8c3628 100644 --- a/tools/lib/perf/include/perf/event.h +++ b/tools/lib/perf/include/perf/event.h @@ -151,6 +151,10 @@ struct perf_record_header_attr { __u64 id[]; }; +/* Returns the pointer to id array based on the actual attr size. */ +#define perf_record_header_attr_id(evt) \ + ((void *)&(evt)->attr.attr + (evt)->attr.attr.size) + enum { PERF_CPU_MAP__CPUS = 0, PERF_CPU_MAP__MASK = 1, |