]> git.itanic.dy.fi Git - linux-stable/commitdiff
libperf: Add perf_record_header_attr_id()
authorNamhyung Kim <namhyung@kernel.org>
Fri, 25 Aug 2023 15:25:50 +0000 (08:25 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 29 Aug 2023 17:16:14 +0000 (14:16 -0300)
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>
tools/lib/perf/include/perf/event.h

index ba2dcf64f4e6399caad96f11f1fcb679e8e80abf..e563dd8c3628f0830767e3cdee626c84336288a9 100644 (file)
@@ -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,