[][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
};