[−][src]Constant nc::types::PERF_RECORD_SAMPLE
pub const PERF_RECORD_SAMPLE: i32
struct { struct perf_event_header header;
Note that PERF_SAMPLE_IDENTIFIER duplicates PERF_SAMPLE_ID.
The advantage of PERF_SAMPLE_IDENTIFIER is that its position
is fixed relative to header.
{ u64 id; } && PERF_SAMPLE_IDENTIFIER
{ u64 ip; } && PERF_SAMPLE_IP
{ u32 pid, tid; } && PERF_SAMPLE_TID
{ u64 time; } && PERF_SAMPLE_TIME
{ u64 addr; } && PERF_SAMPLE_ADDR
{ u64 id; } && PERF_SAMPLE_ID
{ u64 stream_id;} && PERF_SAMPLE_STREAM_ID
{ u32 cpu, res; } && PERF_SAMPLE_CPU
{ u64 period; } && PERF_SAMPLE_PERIOD
{ struct read_format values; } && PERF_SAMPLE_READ
{ u64 nr
u64 ips[nr]; } && PERF_SAMPLE_CALLCHAIN
The RAW record below is opaque data wrt the ABI
That is, the ABI doesn't make any promises wrt to
the stability of its content, it may vary depending
on event, hardware, kernel version and phase of
the moon.
In other words, PERF_SAMPLE_RAW contents are not an ABI.
{ u32 size;
char data[size];}&& PERF_SAMPLE_RAW
{ u64 nr;
{ u64 from, to, flags } lbr[nr];} && PERF_SAMPLE_BRANCH_STACK
{ u64 abi; # enum perf_sample_regs_abi
u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_USER
{ u64 size;
char data[size];
u64 dyn_size; } && PERF_SAMPLE_STACK_USER
{ u64 weight; } && PERF_SAMPLE_WEIGHT
{ u64 data_src; } && PERF_SAMPLE_DATA_SRC
{ u64 transaction; } && PERF_SAMPLE_TRANSACTION
{ u64 abi; # enum perf_sample_regs_abi
u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_INTR
{ u64 phys_addr;} && PERF_SAMPLE_PHYS_ADDR
};