#![allow(clippy::module_name_repetitions)]
#[repr(u8)]
pub enum perf_type_id_t {
PERF_TYPE_HARDWARE = 0,
PERF_TYPE_SOFTWARE = 1,
PERF_TYPE_TRACEPOINT = 2,
PERF_TYPE_HW_CACHE = 3,
PERF_TYPE_RAW = 4,
PERF_TYPE_BREAKPOINT = 5,
PERF_TYPE_MAX = 6,
}
#[repr(u8)]
pub enum perf_hw_id_t {
PERF_COUNT_HW_CPU_CYCLES = 0,
PERF_COUNT_HW_INSTRUCTIONS = 1,
PERF_COUNT_HW_CACHE_REFERENCES = 2,
PERF_COUNT_HW_CACHE_MISSES = 3,
PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
PERF_COUNT_HW_BRANCH_MISSES = 5,
PERF_COUNT_HW_BUS_CYCLES = 6,
PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7,
PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8,
PERF_COUNT_HW_REF_CPU_CYCLES = 9,
PERF_COUNT_HW_MAX = 10,
}
#[repr(u8)]
pub enum perf_hw_cache_id_t {
PERF_COUNT_HW_CACHE_L1D = 0,
PERF_COUNT_HW_CACHE_L1I = 1,
PERF_COUNT_HW_CACHE_LL = 2,
PERF_COUNT_HW_CACHE_DTLB = 3,
PERF_COUNT_HW_CACHE_ITLB = 4,
PERF_COUNT_HW_CACHE_BPU = 5,
PERF_COUNT_HW_CACHE_NODE = 6,
PERF_COUNT_HW_CACHE_MAX = 7,
}
#[repr(u8)]
pub enum perf_hw_cache_op_id_t {
PERF_COUNT_HW_CACHE_OP_READ = 0,
PERF_COUNT_HW_CACHE_OP_WRITE = 1,
PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
PERF_COUNT_HW_CACHE_OP_MAX = 3,
}
#[repr(u8)]
pub enum perf_hw_cache_op_result_id_t {
PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
PERF_COUNT_HW_CACHE_RESULT_MAX = 2,
}
#[repr(u8)]
pub enum perf_sw_ids_t {
PERF_COUNT_SW_CPU_CLOCK = 0,
PERF_COUNT_SW_TASK_CLOCK = 1,
PERF_COUNT_SW_PAGE_FAULTS = 2,
PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
PERF_COUNT_SW_CPU_MIGRATIONS = 4,
PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
PERF_COUNT_SW_EMULATION_FAULTS = 8,
PERF_COUNT_SW_DUMMY = 9,
PERF_COUNT_SW_BPF_OUTPUT = 10,
PERF_COUNT_SW_MAX = 11,
}
#[repr(u64)]
#[derive(Debug, PartialOrd, PartialEq, Eq)]
pub enum perf_event_sample_format_t {
PERF_SAMPLE_IP = 1,
PERF_SAMPLE_TID = 1 << 1,
PERF_SAMPLE_TIME = 1 << 2,
PERF_SAMPLE_ADDR = 1 << 3,
PERF_SAMPLE_READ = 1 << 4,
PERF_SAMPLE_CALLCHAIN = 1 << 5,
PERF_SAMPLE_ID = 1 << 6,
PERF_SAMPLE_CPU = 1 << 7,
PERF_SAMPLE_PERIOD = 1 << 8,
PERF_SAMPLE_STREAM_ID = 1 << 9,
PERF_SAMPLE_RAW = 1 << 10,
PERF_SAMPLE_BRANCH_STACK = 1 << 11,
PERF_SAMPLE_REGS_USER = 1 << 12,
PERF_SAMPLE_STACK_USER = 1 << 13,
PERF_SAMPLE_WEIGHT = 1 << 14,
PERF_SAMPLE_DATA_SRC = 1 << 15,
PERF_SAMPLE_IDENTIFIER = 1 << 16,
PERF_SAMPLE_TRANSACTION = 1 << 17,
PERF_SAMPLE_REGS_INTR = 1 << 18,
PERF_SAMPLE_PHYS_ADDR = 1 << 19,
PERF_SAMPLE_AUX = 1 << 20,
PERF_SAMPLE_CGROUP = 1 << 21,
PERF_SAMPLE_DATA_PAGE_SIZE = 1 << 22,
PERF_SAMPLE_CODE_PAGE_SIZE = 1 << 23,
PERF_SAMPLE_WEIGHT_STRUCT = 1 << 24,
PERF_SAMPLE_MAX = 1 << 25,
__PERF_SAMPLE_CALLCHAIN_EARLY = 1 << 63,
}
pub const PERF_SAMPLE_WEIGHT_TYPE: u64 = perf_event_sample_format_t::PERF_SAMPLE_WEIGHT as u64
| perf_event_sample_format_t::PERF_SAMPLE_WEIGHT_STRUCT as u64;
#[repr(u8)]
pub enum perf_branch_sample_type_shift_t {
PERF_SAMPLE_BRANCH_USER_SHIFT = 0,
PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 1,
PERF_SAMPLE_BRANCH_HV_SHIFT = 2,
PERF_SAMPLE_BRANCH_ANY_SHIFT = 3,
PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 4,
PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 5,
PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 6,
PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 7,
PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 8,
PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 9,
PERF_SAMPLE_BRANCH_COND_SHIFT = 10,
PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 11,
PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 12,
PERF_SAMPLE_BRANCH_CALL_SHIFT = 13,
PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 14,
PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
PERF_SAMPLE_BRANCH_MAX_SHIFT = 18,
}
#[allow(clippy::enum_glob_use)]
use perf_branch_sample_type_shift_t::*;
#[repr(u32)]
pub enum perf_branch_sample_type_t {
PERF_SAMPLE_BRANCH_USER = 1 << PERF_SAMPLE_BRANCH_USER_SHIFT as u32,
PERF_SAMPLE_BRANCH_KERNEL = 1 << PERF_SAMPLE_BRANCH_KERNEL_SHIFT as u32,
PERF_SAMPLE_BRANCH_HV = 1 << PERF_SAMPLE_BRANCH_HV_SHIFT as u32,
PERF_SAMPLE_BRANCH_ANY = 1 << PERF_SAMPLE_BRANCH_ANY_SHIFT as u32,
PERF_SAMPLE_BRANCH_ANY_CALL = 1 << PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT as u32,
PERF_SAMPLE_BRANCH_ANY_RETURN = 1 << PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT as u32,
PERF_SAMPLE_BRANCH_IND_CALL = 1 << PERF_SAMPLE_BRANCH_IND_CALL_SHIFT as u32,
PERF_SAMPLE_BRANCH_ABORT_TX = 1 << PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT as u32,
PERF_SAMPLE_BRANCH_IN_TX = 1 << PERF_SAMPLE_BRANCH_IN_TX_SHIFT as u32,
PERF_SAMPLE_BRANCH_NO_TX = 1 << PERF_SAMPLE_BRANCH_NO_TX_SHIFT as u32,
PERF_SAMPLE_BRANCH_COND = 1 << PERF_SAMPLE_BRANCH_COND_SHIFT as u32,
PERF_SAMPLE_BRANCH_CALL_STACK = 1 << PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT as u32,
PERF_SAMPLE_BRANCH_IND_JUMP = 1 << PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT as u32,
PERF_SAMPLE_BRANCH_CALL = 1 << PERF_SAMPLE_BRANCH_CALL_SHIFT as u32,
PERF_SAMPLE_BRANCH_NO_FLAGS = 1 << PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT as u32,
PERF_SAMPLE_BRANCH_NO_CYCLES = 1 << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT as u32,
PERF_SAMPLE_BRANCH_TYPE_SAVE = 1 << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT as u32,
PERF_SAMPLE_BRANCH_HW_INDEX = 1 << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT as u32,
PERF_SAMPLE_BRANCH_MAX = 1 << PERF_SAMPLE_BRANCH_MAX_SHIFT as u32,
}
pub const PERF_BR_UNKNOWN: i32 = 0;
pub const PERF_BR_COND: i32 = 1;
pub const PERF_BR_UNCOND: i32 = 2;
pub const PERF_BR_IND: i32 = 3;
pub const PERF_BR_CALL: i32 = 4;
pub const PERF_BR_IND_CALL: i32 = 5;
pub const PERF_BR_RET: i32 = 6;
pub const PERF_BR_SYSCALL: i32 = 7;
pub const PERF_BR_SYSRET: i32 = 8;
pub const PERF_BR_COND_CALL: i32 = 9;
pub const PERF_BR_COND_RET: i32 = 10;
pub const PERF_BR_MAX: i32 = 11;
pub const PERF_SAMPLE_BRANCH_PLM_ALL: u32 = perf_branch_sample_type_t::PERF_SAMPLE_BRANCH_USER
as u32
| perf_branch_sample_type_t::PERF_SAMPLE_BRANCH_KERNEL as u32
| perf_branch_sample_type_t::PERF_SAMPLE_BRANCH_HV as u32;
#[repr(u8)]
pub enum perf_sample_regs_abi_t {
PERF_SAMPLE_REGS_ABI_NONE = 0,
PERF_SAMPLE_REGS_ABI_32 = 1,
PERF_SAMPLE_REGS_ABI_64 = 2,
}
pub const PERF_TXN_ELISION: i32 = 1;
pub const PERF_TXN_TRANSACTION: i32 = 1 << 1;
pub const PERF_TXN_SYNC: i32 = 1 << 2;
pub const PERF_TXN_ASYNC: i32 = 1 << 3;
pub const PERF_TXN_RETRY: i32 = 1 << 4;
pub const PERF_TXN_CONFLICT: i32 = 1 << 5;
pub const PERF_TXN_CAPACITY_WRITE: i32 = 1 << 6;
pub const PERF_TXN_CAPACITY_READ: i32 = 1 << 7;
pub const PERF_TXN_MAX: i32 = 1 << 8;
pub const PERF_TXN_ABORT_MASK: u64 = 0xffff_ffff << 32;
pub const PERF_TXN_ABORT_SHIFT: i32 = 32;
#[repr(u8)]
pub enum perf_event_read_format_t {
PERF_FORMAT_TOTAL_TIME_ENABLED = 1,
PERF_FORMAT_TOTAL_TIME_RUNNING = 1 << 1,
PERF_FORMAT_ID = 1 << 2,
PERF_FORMAT_GROUP = 1 << 3,
PERF_FORMAT_MAX = 1 << 4,
}
pub const PERF_ATTR_SIZE_VER0: i32 = 64;
pub const PERF_ATTR_SIZE_VER1: i32 = 72;
pub const PERF_ATTR_SIZE_VER2: i32 = 80;
pub const PERF_ATTR_SIZE_VER3: i32 = 96;
pub const PERF_ATTR_SIZE_VER4: i32 = 104;
pub const PERF_ATTR_SIZE_VER5: i32 = 112;
#[repr(C)]
pub union perf_event_attr_sample_t {
pub sample_period: u64,
pub sample_freq: u64,
}
#[repr(C)]
pub union perf_event_attr_wakeup_t {
pub wakeup_events: u32,
pub wakeup_watermark: u32,
}
#[repr(C)]
pub union perf_event_attr_config1_t {
pub bp_addr: u64,
pub kprobe_func: u64,
pub uprobe_path: u64,
pub config1: u64,
}
#[repr(C)]
pub union perf_event_attr_config2_t {
pub bp_len: u64,
pub kprobe_addr: u64,
pub probe_offset: u64,
pub config2: u64,
}
#[repr(C)]
pub struct perf_event_attr_t {
pub type_: u32,
pub size: u32,
pub config: u64,
pub sample: perf_event_attr_sample_t,
pub sample_type: u64,
pub read_format: u64,
pub disabled: u8,
pub inherit: u8,
pub pinned: u8,
pub exclusive: u8,
pub exclude_user: u8,
pub exclude_kernel: u8,
pub exclude_hv: u8,
pub exclude_idle: u8,
pub mmap: u8,
pub comm: u8,
pub freq: u8,
pub inherit_stat: u8,
pub enable_on_exec: u8,
pub task: u8,
pub watermark: u8,
pub precise_ip: u8,
pub mmap_data: u8,
pub sample_id_all: u8,
pub exclude_host: u8,
pub exclude_guest: u8,
pub exclude_callchain_kernel: u8,
pub exclude_callchain_user: u8,
pub mmap2: u8,
pub comm_exec: u8,
pub use_clockid: u8,
pub context_switch: u8,
pub write_backward: u8,
pub namespaces: u8,
reserved_1: u8,
pub wakeup: perf_event_attr_wakeup_t,
pub bp_type: u32,
pub config1: perf_event_attr_config1_t,
pub config2: perf_event_attr_config2_t,
pub branch_sample_type: u64,
pub sample_regs_user: u64,
pub sample_stack_user: u32,
pub clockid: i32,
pub sample_regs_intr: u64,
pub aux_watermark: u32,
pub sample_max_stack: u16,
reserved_2: u16,
}
#[repr(C)]
pub struct perf_event_query_bpf_t {
pub ids_len: u32,
pub prog_cnt: u32,
pub ids: *mut u32,
}
#[inline]
#[must_use]
pub const fn perf_flags(attr: &perf_event_attr_t) -> u64 {
attr.read_format + 1
}
pub const PERF_IOC_FLAG_GROUP: u32 = 1;
#[repr(C)]
#[derive(Clone, Copy)]
pub struct perf_event_mmap_page_cap_detail_t {
pub cap_bit0: u8,
pub cap_bit0_is_deprecated: u8,
pub cap_user_rdpmc: u8,
pub cap_user_time: u8,
pub cap_user_time_zero: u8,
cap_____res: u8,
}
#[repr(C)]
pub union perf_event_mmap_page_cap_t {
pub capabilities: u64,
pub detail: perf_event_mmap_page_cap_detail_t,
}
#[repr(C)]
pub struct perf_event_mmap_page_t {
pub version: u32,
pub compat_version: u32,
pub lock: u32,
pub index: u32,
pub offset: i64,
pub time_enabled: u64,
pub time_running: u64,
pub cap: perf_event_mmap_page_cap_t,
pub pmc_width: u16,
pub time_shift: u16,
pub time_mult: u32,
pub time_offset: u64,
pub time_zero: u64,
pub size: u32,
reserved: [u8; 118 * 8 + 4],
pub data_head: u64,
pub data_tail: u64,
pub data_offset: u64,
pub data_size: u64,
pub aux_head: u64,
pub aux_tail: u64,
pub aux_offset: u64,
pub aux_size: u64,
}
pub const PERF_RECORD_MISC_CPUMODE_MASK: i32 = 7;
pub const PERF_RECORD_MISC_CPUMODE_UNKNOWN: i32 = 0;
pub const PERF_RECORD_MISC_KERNEL: i32 = 1;
pub const PERF_RECORD_MISC_USER: i32 = 2;
pub const PERF_RECORD_MISC_HYPERVISOR: i32 = 3;
pub const PERF_RECORD_MISC_GUEST_KERNEL: i32 = 4;
pub const PERF_RECORD_MISC_GUEST_USER: i32 = 5;
pub const PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT: i32 = 1 << 12;
pub const PERF_RECORD_MISC_MMAP_DATA: i32 = 1 << 13;
pub const PERF_RECORD_MISC_COMM_EXEC: i32 = 1 << 13;
pub const PERF_RECORD_MISC_SWITCH_OUT: i32 = 1 << 13;
pub const PERF_RECORD_MISC_EXACT_IP: i32 = 1 << 14;
pub const PERF_RECORD_MISC_SWITCH_OUT_PREEMPT: i32 = 1 << 14;
pub const PERF_RECORD_MISC_EXT_RESERVED: i32 = 1 << 15;
#[repr(C)]
pub struct perf_event_header_t {
pub type_: u32,
pub misc: u16,
pub size: u16,
}
#[repr(C)]
pub struct perf_ns_link_info_t {
pub dev: u64,
pub ino: u64,
}
pub const NET_NS_INDEX: i32 = 0;
pub const UTS_NS_INDEX: i32 = 1;
pub const IPC_NS_INDEX: i32 = 2;
pub const PID_NS_INDEX: i32 = 3;
pub const USER_NS_INDEX: i32 = 4;
pub const MNT_NS_INDEX: i32 = 5;
pub const CGROUP_NS_INDEX: i32 = 6;
pub const NR_NAMESPACES: i32 = 7;
pub enum perf_event_type_t {
PERF_RECORD_MMAP = 1,
PERF_RECORD_LOST = 2,
PERF_RECORD_COMM = 3,
PERF_RECORD_EXIT = 4,
PERF_RECORD_THROTTLE = 5,
PERF_RECORD_UNTHROTTLE = 6,
PERF_RECORD_FORK = 7,
PERF_RECORD_READ = 8,
PERF_RECORD_SAMPLE = 9,
PERF_RECORD_MMAP2 = 10,
PERF_RECORD_AUX = 11,
PERF_RECORD_ITRACE_START = 12,
PERF_RECORD_LOST_SAMPLES = 13,
PERF_RECORD_SWITCH = 14,
PERF_RECORD_SWITCH_CPU_WIDE = 15,
PERF_RECORD_NAMESPACES = 16,
PERF_RECORD_KSYMBOL = 17,
PERF_RECORD_BPF_EVENT = 18,
PERF_RECORD_CGROUP = 19,
PERF_RECORD_TEXT_POKE = 20,
PERF_RECORD_MAX,
}
#[repr(u8)]
pub enum perf_record_ksymbol_type_t {
PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0,
PERF_RECORD_KSYMBOL_TYPE_BPF = 1,
PERF_RECORD_KSYMBOL_TYPE_OOL = 2,
PERF_RECORD_KSYMBOL_TYPE_MAX,
}
pub const PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER: u8 = 1 << 0;
#[repr(u8)]
pub enum perf_bpf_event_type_t {
PERF_BPF_EVENT_UNKNOWN = 0,
PERF_BPF_EVENT_PROG_LOAD = 1,
PERF_BPF_EVENT_PROG_UNLOAD = 2,
PERF_BPF_EVENT_MAX,
}
pub const PERF_MAX_STACK_DEPTH: i32 = 127;
pub const PERF_MAX_CONTEXTS_PER_STACK: i32 = 8;
#[repr(i64)]
pub enum perf_callchain_context_t {
PERF_CONTEXT_HV = -32,
PERF_CONTEXT_KERNEL = -128,
PERF_CONTEXT_USER = -512,
PERF_CONTEXT_GUEST = -2048,
PERF_CONTEXT_GUEST_KERNEL = -2176,
PERF_CONTEXT_GUEST_USER = -2560,
PERF_CONTEXT_MAX = -4095,
}
pub const PERF_AUX_FLAG_TRUNCATED: i32 = 0x01;
pub const PERF_AUX_FLAG_OVERWRITE: i32 = 0x02;
pub const PERF_AUX_FLAG_PARTIAL: i32 = 0x04;
pub const PERF_AUX_FLAG_COLLISION: i32 = 0x08;
pub const PERF_FLAG_FD_NO_GROUP: usize = 1;
pub const PERF_FLAG_FD_OUTPUT: usize = 1 << 1;
pub const PERF_FLAG_PID_CGROUP: usize = 1 << 2;
pub const PERF_FLAG_FD_CLOEXEC: usize = 1 << 3;
#[cfg(target_endian = "little")]
#[repr(C)]
#[derive(Clone, Copy)]
pub struct perf_mem_data_mem_t {
pub mem_op: u8,
pub mem_lvl: u8,
pub mem_snoop: u8,
pub mem_lock: u8,
pub mem_dtlb: u8,
pub mem_lvl_num: u8,
pub mem_remote: u8,
pub mem_snoopx: u8,
pub mem_rsvd: u8,
}
#[cfg(target_endian = "big")]
#[repr(C)]
#[derive(Clone, Copy)]
pub struct perf_mem_data_mem_t {
pub mem_rsvd: u8,
pub mem_snoopx: u8,
pub mem_remote: u8,
pub mem_lvl_num: u8,
pub mem_dtlb: u8,
pub mem_lock: u8,
pub mem_snoop: u8,
pub mem_lvl: u8,
pub mem_op: u8,
}
#[repr(C)]
pub union perf_mem_data_src_t {
pub val: u64,
pub mem: perf_mem_data_mem_t,
}
pub const PERF_MEM_OP_NA: i32 = 0x01;
pub const PERF_MEM_OP_LOAD: i32 = 0x02;
pub const PERF_MEM_OP_STORE: i32 = 0x04;
pub const PERF_MEM_OP_PFETCH: i32 = 0x08;
pub const PERF_MEM_OP_EXEC: i32 = 0x10;
pub const PERF_MEM_OP_SHIFT: i32 = 0;
pub const PERF_MEM_LVL_NA: i32 = 0x01;
pub const PERF_MEM_LVL_HIT: i32 = 0x02;
pub const PERF_MEM_LVL_MISS: i32 = 0x04;
pub const PERF_MEM_LVL_L1: i32 = 0x08;
pub const PERF_MEM_LVL_LFB: i32 = 0x10;
pub const PERF_MEM_LVL_L2: i32 = 0x20;
pub const PERF_MEM_LVL_L3: i32 = 0x40;
pub const PERF_MEM_LVL_LOC_RAM: i32 = 0x80;
pub const PERF_MEM_LVL_REM_RAM1: i32 = 0x100;
pub const PERF_MEM_LVL_REM_RAM2: i32 = 0x200;
pub const PERF_MEM_LVL_REM_CCE1: i32 = 0x400;
pub const PERF_MEM_LVL_REM_CCE2: i32 = 0x800;
pub const PERF_MEM_LVL_IO: i32 = 0x1000;
pub const PERF_MEM_LVL_UNC: i32 = 0x2000;
pub const PERF_MEM_LVL_SHIFT: i32 = 5;
pub const PERF_MEM_REMOTE_REMOTE: i32 = 0x01;
pub const PERF_MEM_REMOTE_SHIFT: i32 = 37;
pub const PERF_MEM_LVLNUM_L1: i32 = 0x01;
pub const PERF_MEM_LVLNUM_L2: i32 = 0x02;
pub const PERF_MEM_LVLNUM_L3: i32 = 0x03;
pub const PERF_MEM_LVLNUM_L4: i32 = 0x04;
pub const PERF_MEM_LVLNUM_ANY_CACHE: i32 = 0x0b;
pub const PERF_MEM_LVLNUM_LFB: i32 = 0x0c;
pub const PERF_MEM_LVLNUM_RAM: i32 = 0x0d;
pub const PERF_MEM_LVLNUM_PMEM: i32 = 0x0e;
pub const PERF_MEM_LVLNUM_NA: i32 = 0x0f;
pub const PERF_MEM_LVLNUM_SHIFT: i32 = 33;
pub const PERF_MEM_SNOOP_NA: i32 = 0x01;
pub const PERF_MEM_SNOOP_NONE: i32 = 0x02;
pub const PERF_MEM_SNOOP_HIT: i32 = 0x04;
pub const PERF_MEM_SNOOP_MISS: i32 = 0x08;
pub const PERF_MEM_SNOOP_HITM: i32 = 0x10;
pub const PERF_MEM_SNOOP_SHIFT: i32 = 19;
pub const PERF_MEM_SNOOPX_FWD: i32 = 0x01;
pub const PERF_MEM_SNOOPX_SHIFT: i32 = 37;
pub const PERF_MEM_LOCK_NA: i32 = 0x01;
pub const PERF_MEM_LOCK_LOCKED: i32 = 0x02;
pub const PERF_MEM_LOCK_SHIFT: i32 = 24;
pub const PERF_MEM_TLB_NA: i32 = 0x01;
pub const PERF_MEM_TLB_HIT: i32 = 0x02;
pub const PERF_MEM_TLB_MISS: i32 = 0x04;
pub const PERF_MEM_TLB_L1: i32 = 0x08;
pub const PERF_MEM_TLB_L2: i32 = 0x10;
pub const PERF_MEM_TLB_WK: i32 = 0x20;
pub const PERF_MEM_TLB_OS: i32 = 0x40;
pub const PERF_MEM_TLB_SHIFT: i32 = 26;
#[repr(C)]
pub struct perf_branch_entry_t {
pub from: u64,
pub to: u64,
pub mispred: u8,
pub predicted: u8,
pub in_tx: u8,
pub abort: u8,
pub cycles: u8,
pub type_: u8,
reserved: u8,
}