perf cpumap: Add range data encoding
Often cpumaps encode a range of all CPUs, add a compact encoding that doesn't require a bit mask or list of all CPUs. Signed-off-by: Ian Rogers <irogers@google.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com> Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com> Cc: Colin Ian King <colin.king@intel.com> Cc: Dave Marchevsky <davemarchevsky@fb.com> Cc: German Gomez <german.gomez@arm.com> Cc: Gustavo A. R. Silva <gustavoars@kernel.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Kees Kook <keescook@chromium.org> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Riccardo Mancini <rickyman7@gmail.com> Cc: Song Liu <songliubraving@fb.com> Cc: Stephane Eranian <eranian@google.com> Link: https://lore.kernel.org/r/20220614143353.1559597-7-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
d773c999b8
commit
c7202d20fb
@@ -153,6 +153,7 @@ struct perf_record_header_attr {
|
||||
enum {
|
||||
PERF_CPU_MAP__CPUS = 0,
|
||||
PERF_CPU_MAP__MASK = 1,
|
||||
PERF_CPU_MAP__RANGE_CPUS = 2,
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -195,6 +196,17 @@ struct perf_record_mask_cpu_map64 {
|
||||
#pragma GCC diagnostic ignored "-Wpacked"
|
||||
#pragma GCC diagnostic ignored "-Wattributes"
|
||||
|
||||
/*
|
||||
* An encoding of a CPU map for a range starting at start_cpu through to
|
||||
* end_cpu. If any_cpu is 1, an any CPU (-1) value (aka dummy value) is present.
|
||||
*/
|
||||
struct perf_record_range_cpu_map {
|
||||
__u8 any_cpu;
|
||||
__u8 __pad;
|
||||
__u16 start_cpu;
|
||||
__u16 end_cpu;
|
||||
};
|
||||
|
||||
struct __packed perf_record_cpu_map_data {
|
||||
__u16 type;
|
||||
union {
|
||||
@@ -204,6 +216,8 @@ struct __packed perf_record_cpu_map_data {
|
||||
struct perf_record_mask_cpu_map32 mask32_data;
|
||||
/* Used when type == PERF_CPU_MAP__MASK and long_size == 8. */
|
||||
struct perf_record_mask_cpu_map64 mask64_data;
|
||||
/* Used when type == PERF_CPU_MAP__RANGE_CPUS. */
|
||||
struct perf_record_range_cpu_map range_cpu_data;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user