#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage> {
storage: Storage,
}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
Self { storage }
}
}
impl<Storage> __BindgenBitfieldUnit<Storage>
where
Storage: AsRef<[u8]> + AsMut<[u8]>,
{
#[inline]
pub fn get_bit(&self, index: usize) -> bool {
debug_assert!(index / 8 < self.storage.as_ref().len());
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
let bit_index = if cfg!(target_endian = "big") {
7 - (index % 8)
} else {
index % 8
};
let mask = 1 << bit_index;
byte & mask == mask
}
#[inline]
pub fn set_bit(&mut self, index: usize, val: bool) {
debug_assert!(index / 8 < self.storage.as_ref().len());
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
let bit_index = if cfg!(target_endian = "big") {
7 - (index % 8)
} else {
index % 8
};
let mask = 1 << bit_index;
if val {
*byte |= mask;
} else {
*byte &= !mask;
}
}
#[inline]
pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
debug_assert!(bit_width <= 64);
debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
let mut val = 0;
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
let index = if cfg!(target_endian = "big") {
bit_width as usize - 1 - i
} else {
i
};
val |= 1 << index;
}
}
val
}
#[inline]
pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
debug_assert!(bit_width <= 64);
debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
let index = if cfg!(target_endian = "big") {
bit_width as usize - 1 - i
} else {
i
};
self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
#[repr(C)]
#[derive(Default)]
pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
impl<T> __IncompleteArrayField<T> {
#[inline]
pub const fn new() -> Self {
__IncompleteArrayField(::std::marker::PhantomData, [])
}
#[inline]
pub fn as_ptr(&self) -> *const T {
self as *const _ as *const T
}
#[inline]
pub fn as_mut_ptr(&mut self) -> *mut T {
self as *mut _ as *mut T
}
#[inline]
pub unsafe fn as_slice(&self, len: usize) -> &[T] {
::std::slice::from_raw_parts(self.as_ptr(), len)
}
#[inline]
pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
}
}
impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
fmt.write_str("__IncompleteArrayField")
}
}
pub const PFM_PLM0: i32 = 1;
pub const PFM_PLM1: i32 = 2;
pub const PFM_PLM2: i32 = 4;
pub const PFM_PLM3: i32 = 8;
pub const PFM_PLMH: i32 = 16;
pub const PFM_PMU_INFO_ABI0: i32 = 56;
pub const PFM_EVENT_INFO_ABI0: i32 = 64;
pub const PFM_ATTR_INFO_ABI0: i32 = 64;
pub const PFM_RAW_ENCODE_ABI0: i32 = 32;
pub const PFM_SUCCESS: i32 = 0;
pub const PFM_ERR_NOTSUPP: i32 = -1;
pub const PFM_ERR_INVAL: i32 = -2;
pub const PFM_ERR_NOINIT: i32 = -3;
pub const PFM_ERR_NOTFOUND: i32 = -4;
pub const PFM_ERR_FEATCOMB: i32 = -5;
pub const PFM_ERR_UMASK: i32 = -6;
pub const PFM_ERR_NOMEM: i32 = -7;
pub const PFM_ERR_ATTR: i32 = -8;
pub const PFM_ERR_ATTR_VAL: i32 = -9;
pub const PFM_ERR_ATTR_SET: i32 = -10;
pub const PFM_ERR_TOOMANY: i32 = -11;
pub const PFM_ERR_TOOSMALL: i32 = -12;
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;
pub const PERF_ATTR_SIZE_VER6: i32 = 120;
pub const PERF_ATTR_SIZE_VER7: i32 = 128;
pub const PERF_EVENT_MISC_CPUMODE_MASK: i32 = 3;
pub const PERF_EVENT_MISC_CPUMODE_UNKNOWN: i32 = 0;
pub const PERF_EVENT_MISC_KERNEL: i32 = 1;
pub const PERF_EVENT_MISC_USER: i32 = 2;
pub const PERF_EVENT_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 = 4096;
pub const PERF_RECORD_MISC_MMAP_DATA: i32 = 8192;
pub const PERF_RECORD_MISC_COMM_EXEC: i32 = 8192;
pub const PERF_RECORD_MISC_EXACT: i32 = 16384;
pub const PERF_RECORD_MISC_EXACT_IP: i32 = 16384;
pub const PERF_RECORD_MISC_EXT_RESERVED: i32 = 32768;
pub const PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER: i32 = 1;
pub const PERF_MAX_STACK_DEPTH: i32 = 127;
pub const PERF_MAX_CONTEXTS_PER_STACK: i32 = 8;
pub const PERF_AUX_FLAG_TRUNCATED: i32 = 1;
pub const PERF_AUX_FLAG_OVERWRITE: i32 = 2;
pub const PERF_AUX_FLAG_PARTIAL: i32 = 4;
pub const PERF_AUX_FLAG_COLLISION: i32 = 8;
pub const PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK: i32 = 65280;
pub const PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT: i32 = 0;
pub const PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW: i32 = 256;
pub const PERF_FLAG_FD_NO_GROUP: i32 = 1;
pub const PERF_FLAG_FD_OUTPUT: i32 = 2;
pub const PERF_FLAG_PID_CGROUP: i32 = 4;
pub const PERF_FLAG_FD_CLOEXEC: i32 = 8;
pub const PERF_MEM_OP_NA: i32 = 1;
pub const PERF_MEM_OP_LOAD: i32 = 2;
pub const PERF_MEM_OP_STORE: i32 = 4;
pub const PERF_MEM_OP_PFETCH: i32 = 8;
pub const PERF_MEM_OP_EXEC: i32 = 16;
pub const PERF_MEM_OP_SHIFT: i32 = 0;
pub const PERF_MEM_LVL_NA: i32 = 1;
pub const PERF_MEM_LVL_HIT: i32 = 2;
pub const PERF_MEM_LVL_MISS: i32 = 4;
pub const PERF_MEM_LVL_L1: i32 = 8;
pub const PERF_MEM_LVL_LFB: i32 = 16;
pub const PERF_MEM_LVL_L2: i32 = 32;
pub const PERF_MEM_LVL_L3: i32 = 64;
pub const PERF_MEM_LVL_LOC_RAM: i32 = 128;
pub const PERF_MEM_LVL_REM_RAM1: i32 = 256;
pub const PERF_MEM_LVL_REM_RAM2: i32 = 512;
pub const PERF_MEM_LVL_REM_CCE1: i32 = 1024;
pub const PERF_MEM_LVL_REM_CCE2: i32 = 2048;
pub const PERF_MEM_LVL_IO: i32 = 4096;
pub const PERF_MEM_LVL_UNC: i32 = 8192;
pub const PERF_MEM_LVL_SHIFT: i32 = 5;
pub const PERF_MEM_REMOTE_REMOTE: i32 = 1;
pub const PERF_MEM_REMOTE_SHIFT: i32 = 37;
pub const PERF_MEM_SNOOP_NA: i32 = 1;
pub const PERF_MEM_SNOOP_NONE: i32 = 2;
pub const PERF_MEM_SNOOP_HIT: i32 = 4;
pub const PERF_MEM_SNOOP_MISS: i32 = 8;
pub const PERF_MEM_SNOOP_HITM: i32 = 16;
pub const PERF_MEM_SNOOP_SHIFT: i32 = 19;
pub const PERF_MEM_SNOOPX_FWD: i32 = 1;
pub const PERF_MEM_SNOOPX_SHIFT: i32 = 38;
pub const PERF_MEM_LOCK_NA: i32 = 1;
pub const PERF_MEM_LOCK_LOCKED: i32 = 2;
pub const PERF_MEM_LOCK_SHIFT: i32 = 24;
pub const PERF_MEM_TLB_NA: i32 = 1;
pub const PERF_MEM_TLB_HIT: i32 = 2;
pub const PERF_MEM_TLB_MISS: i32 = 4;
pub const PERF_MEM_TLB_L1: i32 = 8;
pub const PERF_MEM_TLB_L2: i32 = 16;
pub const PERF_MEM_TLB_WK: i32 = 32;
pub const PERF_MEM_TLB_OS: i32 = 64;
pub const PERF_MEM_TLB_SHIFT: i32 = 26;
pub const PERF_MEM_BLK_NA: i32 = 1;
pub const PERF_MEM_BLK_DATA: i32 = 2;
pub const PERF_MEM_BLK_ADDR: i32 = 4;
pub const PERF_MEM_BLK_SHIFT: i32 = 40;
pub const PERF_MEM_HOPS_0: i32 = 1;
pub const PERF_MEM_HOPS_1: i32 = 2;
pub const PERF_MEM_HOPS_2: i32 = 3;
pub const PERF_MEM_HOPS_3: i32 = 4;
pub const PERF_MEM_HOPS_SHIFT: i32 = 43;
pub const PFM_PERF_ENCODE_ABI0: i32 = 40;
pub type __off_t = ::std::os::raw::c_long;
pub type __off64_t = ::std::os::raw::c_long;
pub type FILE = _IO_FILE;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _IO_marker {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _IO_codecvt {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _IO_wide_data {
_unused: [u8; 0],
}
pub type _IO_lock_t = ::std::os::raw::c_void;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _IO_FILE {
pub _flags: ::std::os::raw::c_int,
pub _IO_read_ptr: *mut ::std::os::raw::c_char,
pub _IO_read_end: *mut ::std::os::raw::c_char,
pub _IO_read_base: *mut ::std::os::raw::c_char,
pub _IO_write_base: *mut ::std::os::raw::c_char,
pub _IO_write_ptr: *mut ::std::os::raw::c_char,
pub _IO_write_end: *mut ::std::os::raw::c_char,
pub _IO_buf_base: *mut ::std::os::raw::c_char,
pub _IO_buf_end: *mut ::std::os::raw::c_char,
pub _IO_save_base: *mut ::std::os::raw::c_char,
pub _IO_backup_base: *mut ::std::os::raw::c_char,
pub _IO_save_end: *mut ::std::os::raw::c_char,
pub _markers: *mut _IO_marker,
pub _chain: *mut _IO_FILE,
pub _fileno: ::std::os::raw::c_int,
pub _flags2: ::std::os::raw::c_int,
pub _old_offset: __off_t,
pub _cur_column: ::std::os::raw::c_ushort,
pub _vtable_offset: ::std::os::raw::c_schar,
pub _shortbuf: [::std::os::raw::c_char; 1usize],
pub _lock: *mut _IO_lock_t,
pub _offset: __off64_t,
pub _codecvt: *mut _IO_codecvt,
pub _wide_data: *mut _IO_wide_data,
pub _freeres_list: *mut _IO_FILE,
pub _freeres_buf: *mut ::std::os::raw::c_void,
pub __pad5: usize,
pub _mode: ::std::os::raw::c_int,
pub _unused2: [::std::os::raw::c_char; 20usize],
}
#[test]
fn bindgen_test_layout__IO_FILE() {
const UNINIT: ::std::mem::MaybeUninit<_IO_FILE> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<_IO_FILE>(),
216usize,
concat!("Size of: ", stringify!(_IO_FILE))
);
assert_eq!(
::std::mem::align_of::<_IO_FILE>(),
8usize,
concat!("Alignment of ", stringify!(_IO_FILE))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._flags) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_flags)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_read_ptr) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_read_ptr)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_read_end) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_read_end)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_read_base) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_read_base)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_write_base) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_write_base)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_write_ptr) as usize - ptr as usize },
40usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_write_ptr)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_write_end) as usize - ptr as usize },
48usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_write_end)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_buf_base) as usize - ptr as usize },
56usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_buf_base)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_buf_end) as usize - ptr as usize },
64usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_buf_end)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_save_base) as usize - ptr as usize },
72usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_save_base)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_backup_base) as usize - ptr as usize },
80usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_backup_base)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._IO_save_end) as usize - ptr as usize },
88usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_IO_save_end)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._markers) as usize - ptr as usize },
96usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_markers)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._chain) as usize - ptr as usize },
104usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_chain)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._fileno) as usize - ptr as usize },
112usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_fileno)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._flags2) as usize - ptr as usize },
116usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_flags2)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._old_offset) as usize - ptr as usize },
120usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_old_offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._cur_column) as usize - ptr as usize },
128usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_cur_column)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._vtable_offset) as usize - ptr as usize },
130usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_vtable_offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._shortbuf) as usize - ptr as usize },
131usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_shortbuf)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._lock) as usize - ptr as usize },
136usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_lock)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._offset) as usize - ptr as usize },
144usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._codecvt) as usize - ptr as usize },
152usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_codecvt)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._wide_data) as usize - ptr as usize },
160usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_wide_data)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._freeres_list) as usize - ptr as usize },
168usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_freeres_list)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._freeres_buf) as usize - ptr as usize },
176usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_freeres_buf)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).__pad5) as usize - ptr as usize },
184usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(__pad5)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._mode) as usize - ptr as usize },
192usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_mode)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr)._unused2) as usize - ptr as usize },
196usize,
concat!(
"Offset of field: ",
stringify!(_IO_FILE),
"::",
stringify!(_unused2)
)
);
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum pfm_pmu_t {
PFM_PMU_NONE = 0,
PFM_PMU_GEN_IA64 = 1,
PFM_PMU_ITANIUM = 2,
PFM_PMU_ITANIUM2 = 3,
PFM_PMU_MONTECITO = 4,
PFM_PMU_AMD64 = 5,
PFM_PMU_I386_P6 = 6,
PFM_PMU_INTEL_NETBURST = 7,
PFM_PMU_INTEL_NETBURST_P = 8,
PFM_PMU_COREDUO = 9,
PFM_PMU_I386_PM = 10,
PFM_PMU_INTEL_CORE = 11,
PFM_PMU_INTEL_PPRO = 12,
PFM_PMU_INTEL_PII = 13,
PFM_PMU_INTEL_ATOM = 14,
PFM_PMU_INTEL_NHM = 15,
PFM_PMU_INTEL_NHM_EX = 16,
PFM_PMU_INTEL_NHM_UNC = 17,
PFM_PMU_INTEL_X86_ARCH = 18,
PFM_PMU_MIPS_20KC = 19,
PFM_PMU_MIPS_24K = 20,
PFM_PMU_MIPS_25KF = 21,
PFM_PMU_MIPS_34K = 22,
PFM_PMU_MIPS_5KC = 23,
PFM_PMU_MIPS_74K = 24,
PFM_PMU_MIPS_R10000 = 25,
PFM_PMU_MIPS_R12000 = 26,
PFM_PMU_MIPS_RM7000 = 27,
PFM_PMU_MIPS_RM9000 = 28,
PFM_PMU_MIPS_SB1 = 29,
PFM_PMU_MIPS_VR5432 = 30,
PFM_PMU_MIPS_VR5500 = 31,
PFM_PMU_MIPS_ICE9A = 32,
PFM_PMU_MIPS_ICE9B = 33,
PFM_PMU_POWERPC = 34,
PFM_PMU_CELL = 35,
PFM_PMU_SPARC_ULTRA12 = 36,
PFM_PMU_SPARC_ULTRA3 = 37,
PFM_PMU_SPARC_ULTRA3I = 38,
PFM_PMU_SPARC_ULTRA3PLUS = 39,
PFM_PMU_SPARC_ULTRA4PLUS = 40,
PFM_PMU_SPARC_NIAGARA1 = 41,
PFM_PMU_SPARC_NIAGARA2 = 42,
PFM_PMU_PPC970 = 43,
PFM_PMU_PPC970MP = 44,
PFM_PMU_POWER3 = 45,
PFM_PMU_POWER4 = 46,
PFM_PMU_POWER5 = 47,
PFM_PMU_POWER5p = 48,
PFM_PMU_POWER6 = 49,
PFM_PMU_POWER7 = 50,
PFM_PMU_PERF_EVENT = 51,
PFM_PMU_INTEL_WSM = 52,
PFM_PMU_INTEL_WSM_DP = 53,
PFM_PMU_INTEL_WSM_UNC = 54,
PFM_PMU_AMD64_K7 = 55,
PFM_PMU_AMD64_K8_REVB = 56,
PFM_PMU_AMD64_K8_REVC = 57,
PFM_PMU_AMD64_K8_REVD = 58,
PFM_PMU_AMD64_K8_REVE = 59,
PFM_PMU_AMD64_K8_REVF = 60,
PFM_PMU_AMD64_K8_REVG = 61,
PFM_PMU_AMD64_FAM10H_BARCELONA = 62,
PFM_PMU_AMD64_FAM10H_SHANGHAI = 63,
PFM_PMU_AMD64_FAM10H_ISTANBUL = 64,
PFM_PMU_ARM_CORTEX_A8 = 65,
PFM_PMU_ARM_CORTEX_A9 = 66,
PFM_PMU_TORRENT = 67,
PFM_PMU_INTEL_SNB = 68,
PFM_PMU_AMD64_FAM14H_BOBCAT = 69,
PFM_PMU_AMD64_FAM15H_INTERLAGOS = 70,
PFM_PMU_INTEL_SNB_EP = 71,
PFM_PMU_AMD64_FAM12H_LLANO = 72,
PFM_PMU_AMD64_FAM11H_TURION = 73,
PFM_PMU_INTEL_IVB = 74,
PFM_PMU_ARM_CORTEX_A15 = 75,
PFM_PMU_INTEL_SNB_UNC_CB0 = 76,
PFM_PMU_INTEL_SNB_UNC_CB1 = 77,
PFM_PMU_INTEL_SNB_UNC_CB2 = 78,
PFM_PMU_INTEL_SNB_UNC_CB3 = 79,
PFM_PMU_INTEL_SNBEP_UNC_CB0 = 80,
PFM_PMU_INTEL_SNBEP_UNC_CB1 = 81,
PFM_PMU_INTEL_SNBEP_UNC_CB2 = 82,
PFM_PMU_INTEL_SNBEP_UNC_CB3 = 83,
PFM_PMU_INTEL_SNBEP_UNC_CB4 = 84,
PFM_PMU_INTEL_SNBEP_UNC_CB5 = 85,
PFM_PMU_INTEL_SNBEP_UNC_CB6 = 86,
PFM_PMU_INTEL_SNBEP_UNC_CB7 = 87,
PFM_PMU_INTEL_SNBEP_UNC_HA = 88,
PFM_PMU_INTEL_SNBEP_UNC_IMC0 = 89,
PFM_PMU_INTEL_SNBEP_UNC_IMC1 = 90,
PFM_PMU_INTEL_SNBEP_UNC_IMC2 = 91,
PFM_PMU_INTEL_SNBEP_UNC_IMC3 = 92,
PFM_PMU_INTEL_SNBEP_UNC_PCU = 93,
PFM_PMU_INTEL_SNBEP_UNC_QPI0 = 94,
PFM_PMU_INTEL_SNBEP_UNC_QPI1 = 95,
PFM_PMU_INTEL_SNBEP_UNC_UBOX = 96,
PFM_PMU_INTEL_SNBEP_UNC_R2PCIE = 97,
PFM_PMU_INTEL_SNBEP_UNC_R3QPI0 = 98,
PFM_PMU_INTEL_SNBEP_UNC_R3QPI1 = 99,
PFM_PMU_INTEL_KNC = 100,
PFM_PMU_S390X_CPUM_CF = 101,
PFM_PMU_ARM_1176 = 102,
PFM_PMU_INTEL_IVB_EP = 103,
PFM_PMU_INTEL_HSW = 104,
PFM_PMU_INTEL_IVB_UNC_CB0 = 105,
PFM_PMU_INTEL_IVB_UNC_CB1 = 106,
PFM_PMU_INTEL_IVB_UNC_CB2 = 107,
PFM_PMU_INTEL_IVB_UNC_CB3 = 108,
PFM_PMU_POWER8 = 109,
PFM_PMU_INTEL_RAPL = 110,
PFM_PMU_INTEL_SLM = 111,
PFM_PMU_AMD64_FAM15H_NB = 112,
PFM_PMU_ARM_QCOM_KRAIT = 113,
PFM_PMU_PERF_EVENT_RAW = 114,
PFM_PMU_INTEL_IVBEP_UNC_CB0 = 115,
PFM_PMU_INTEL_IVBEP_UNC_CB1 = 116,
PFM_PMU_INTEL_IVBEP_UNC_CB2 = 117,
PFM_PMU_INTEL_IVBEP_UNC_CB3 = 118,
PFM_PMU_INTEL_IVBEP_UNC_CB4 = 119,
PFM_PMU_INTEL_IVBEP_UNC_CB5 = 120,
PFM_PMU_INTEL_IVBEP_UNC_CB6 = 121,
PFM_PMU_INTEL_IVBEP_UNC_CB7 = 122,
PFM_PMU_INTEL_IVBEP_UNC_CB8 = 123,
PFM_PMU_INTEL_IVBEP_UNC_CB9 = 124,
PFM_PMU_INTEL_IVBEP_UNC_CB10 = 125,
PFM_PMU_INTEL_IVBEP_UNC_CB11 = 126,
PFM_PMU_INTEL_IVBEP_UNC_CB12 = 127,
PFM_PMU_INTEL_IVBEP_UNC_CB13 = 128,
PFM_PMU_INTEL_IVBEP_UNC_CB14 = 129,
PFM_PMU_INTEL_IVBEP_UNC_HA0 = 130,
PFM_PMU_INTEL_IVBEP_UNC_HA1 = 131,
PFM_PMU_INTEL_IVBEP_UNC_IMC0 = 132,
PFM_PMU_INTEL_IVBEP_UNC_IMC1 = 133,
PFM_PMU_INTEL_IVBEP_UNC_IMC2 = 134,
PFM_PMU_INTEL_IVBEP_UNC_IMC3 = 135,
PFM_PMU_INTEL_IVBEP_UNC_IMC4 = 136,
PFM_PMU_INTEL_IVBEP_UNC_IMC5 = 137,
PFM_PMU_INTEL_IVBEP_UNC_IMC6 = 138,
PFM_PMU_INTEL_IVBEP_UNC_IMC7 = 139,
PFM_PMU_INTEL_IVBEP_UNC_PCU = 140,
PFM_PMU_INTEL_IVBEP_UNC_QPI0 = 141,
PFM_PMU_INTEL_IVBEP_UNC_QPI1 = 142,
PFM_PMU_INTEL_IVBEP_UNC_QPI2 = 143,
PFM_PMU_INTEL_IVBEP_UNC_UBOX = 144,
PFM_PMU_INTEL_IVBEP_UNC_R2PCIE = 145,
PFM_PMU_INTEL_IVBEP_UNC_R3QPI0 = 146,
PFM_PMU_INTEL_IVBEP_UNC_R3QPI1 = 147,
PFM_PMU_INTEL_IVBEP_UNC_R3QPI2 = 148,
PFM_PMU_INTEL_IVBEP_UNC_IRP = 149,
PFM_PMU_S390X_CPUM_SF = 150,
PFM_PMU_ARM_CORTEX_A57 = 151,
PFM_PMU_ARM_CORTEX_A53 = 152,
PFM_PMU_ARM_CORTEX_A7 = 153,
PFM_PMU_INTEL_HSW_EP = 154,
PFM_PMU_INTEL_BDW = 155,
PFM_PMU_ARM_XGENE = 156,
PFM_PMU_INTEL_HSWEP_UNC_CB0 = 157,
PFM_PMU_INTEL_HSWEP_UNC_CB1 = 158,
PFM_PMU_INTEL_HSWEP_UNC_CB2 = 159,
PFM_PMU_INTEL_HSWEP_UNC_CB3 = 160,
PFM_PMU_INTEL_HSWEP_UNC_CB4 = 161,
PFM_PMU_INTEL_HSWEP_UNC_CB5 = 162,
PFM_PMU_INTEL_HSWEP_UNC_CB6 = 163,
PFM_PMU_INTEL_HSWEP_UNC_CB7 = 164,
PFM_PMU_INTEL_HSWEP_UNC_CB8 = 165,
PFM_PMU_INTEL_HSWEP_UNC_CB9 = 166,
PFM_PMU_INTEL_HSWEP_UNC_CB10 = 167,
PFM_PMU_INTEL_HSWEP_UNC_CB11 = 168,
PFM_PMU_INTEL_HSWEP_UNC_CB12 = 169,
PFM_PMU_INTEL_HSWEP_UNC_CB13 = 170,
PFM_PMU_INTEL_HSWEP_UNC_CB14 = 171,
PFM_PMU_INTEL_HSWEP_UNC_CB15 = 172,
PFM_PMU_INTEL_HSWEP_UNC_CB16 = 173,
PFM_PMU_INTEL_HSWEP_UNC_CB17 = 174,
PFM_PMU_INTEL_HSWEP_UNC_HA0 = 175,
PFM_PMU_INTEL_HSWEP_UNC_HA1 = 176,
PFM_PMU_INTEL_HSWEP_UNC_IMC0 = 177,
PFM_PMU_INTEL_HSWEP_UNC_IMC1 = 178,
PFM_PMU_INTEL_HSWEP_UNC_IMC2 = 179,
PFM_PMU_INTEL_HSWEP_UNC_IMC3 = 180,
PFM_PMU_INTEL_HSWEP_UNC_IMC4 = 181,
PFM_PMU_INTEL_HSWEP_UNC_IMC5 = 182,
PFM_PMU_INTEL_HSWEP_UNC_IMC6 = 183,
PFM_PMU_INTEL_HSWEP_UNC_IMC7 = 184,
PFM_PMU_INTEL_HSWEP_UNC_PCU = 185,
PFM_PMU_INTEL_HSWEP_UNC_QPI0 = 186,
PFM_PMU_INTEL_HSWEP_UNC_QPI1 = 187,
PFM_PMU_INTEL_HSWEP_UNC_UBOX = 188,
PFM_PMU_INTEL_HSWEP_UNC_R2PCIE = 189,
PFM_PMU_INTEL_HSWEP_UNC_R3QPI0 = 190,
PFM_PMU_INTEL_HSWEP_UNC_R3QPI1 = 191,
PFM_PMU_INTEL_HSWEP_UNC_R3QPI2 = 192,
PFM_PMU_INTEL_HSWEP_UNC_IRP = 193,
PFM_PMU_INTEL_HSWEP_UNC_SB0 = 194,
PFM_PMU_INTEL_HSWEP_UNC_SB1 = 195,
PFM_PMU_INTEL_HSWEP_UNC_SB2 = 196,
PFM_PMU_INTEL_HSWEP_UNC_SB3 = 197,
PFM_PMU_POWERPC_NEST_MCS_READ_BW = 198,
PFM_PMU_POWERPC_NEST_MCS_WRITE_BW = 199,
PFM_PMU_INTEL_SKL = 200,
PFM_PMU_INTEL_BDW_EP = 201,
PFM_PMU_INTEL_GLM = 202,
PFM_PMU_INTEL_KNL = 203,
PFM_PMU_INTEL_KNL_UNC_IMC0 = 204,
PFM_PMU_INTEL_KNL_UNC_IMC1 = 205,
PFM_PMU_INTEL_KNL_UNC_IMC2 = 206,
PFM_PMU_INTEL_KNL_UNC_IMC3 = 207,
PFM_PMU_INTEL_KNL_UNC_IMC4 = 208,
PFM_PMU_INTEL_KNL_UNC_IMC5 = 209,
PFM_PMU_INTEL_KNL_UNC_IMC_UCLK0 = 210,
PFM_PMU_INTEL_KNL_UNC_IMC_UCLK1 = 211,
PFM_PMU_INTEL_KNL_UNC_EDC_ECLK0 = 212,
PFM_PMU_INTEL_KNL_UNC_EDC_ECLK1 = 213,
PFM_PMU_INTEL_KNL_UNC_EDC_ECLK2 = 214,
PFM_PMU_INTEL_KNL_UNC_EDC_ECLK3 = 215,
PFM_PMU_INTEL_KNL_UNC_EDC_ECLK4 = 216,
PFM_PMU_INTEL_KNL_UNC_EDC_ECLK5 = 217,
PFM_PMU_INTEL_KNL_UNC_EDC_ECLK6 = 218,
PFM_PMU_INTEL_KNL_UNC_EDC_ECLK7 = 219,
PFM_PMU_INTEL_KNL_UNC_EDC_UCLK0 = 220,
PFM_PMU_INTEL_KNL_UNC_EDC_UCLK1 = 221,
PFM_PMU_INTEL_KNL_UNC_EDC_UCLK2 = 222,
PFM_PMU_INTEL_KNL_UNC_EDC_UCLK3 = 223,
PFM_PMU_INTEL_KNL_UNC_EDC_UCLK4 = 224,
PFM_PMU_INTEL_KNL_UNC_EDC_UCLK5 = 225,
PFM_PMU_INTEL_KNL_UNC_EDC_UCLK6 = 226,
PFM_PMU_INTEL_KNL_UNC_EDC_UCLK7 = 227,
PFM_PMU_INTEL_KNL_UNC_CHA0 = 228,
PFM_PMU_INTEL_KNL_UNC_CHA1 = 229,
PFM_PMU_INTEL_KNL_UNC_CHA2 = 230,
PFM_PMU_INTEL_KNL_UNC_CHA3 = 231,
PFM_PMU_INTEL_KNL_UNC_CHA4 = 232,
PFM_PMU_INTEL_KNL_UNC_CHA5 = 233,
PFM_PMU_INTEL_KNL_UNC_CHA6 = 234,
PFM_PMU_INTEL_KNL_UNC_CHA7 = 235,
PFM_PMU_INTEL_KNL_UNC_CHA8 = 236,
PFM_PMU_INTEL_KNL_UNC_CHA9 = 237,
PFM_PMU_INTEL_KNL_UNC_CHA10 = 238,
PFM_PMU_INTEL_KNL_UNC_CHA11 = 239,
PFM_PMU_INTEL_KNL_UNC_CHA12 = 240,
PFM_PMU_INTEL_KNL_UNC_CHA13 = 241,
PFM_PMU_INTEL_KNL_UNC_CHA14 = 242,
PFM_PMU_INTEL_KNL_UNC_CHA15 = 243,
PFM_PMU_INTEL_KNL_UNC_CHA16 = 244,
PFM_PMU_INTEL_KNL_UNC_CHA17 = 245,
PFM_PMU_INTEL_KNL_UNC_CHA18 = 246,
PFM_PMU_INTEL_KNL_UNC_CHA19 = 247,
PFM_PMU_INTEL_KNL_UNC_CHA20 = 248,
PFM_PMU_INTEL_KNL_UNC_CHA21 = 249,
PFM_PMU_INTEL_KNL_UNC_CHA22 = 250,
PFM_PMU_INTEL_KNL_UNC_CHA23 = 251,
PFM_PMU_INTEL_KNL_UNC_CHA24 = 252,
PFM_PMU_INTEL_KNL_UNC_CHA25 = 253,
PFM_PMU_INTEL_KNL_UNC_CHA26 = 254,
PFM_PMU_INTEL_KNL_UNC_CHA27 = 255,
PFM_PMU_INTEL_KNL_UNC_CHA28 = 256,
PFM_PMU_INTEL_KNL_UNC_CHA29 = 257,
PFM_PMU_INTEL_KNL_UNC_CHA30 = 258,
PFM_PMU_INTEL_KNL_UNC_CHA31 = 259,
PFM_PMU_INTEL_KNL_UNC_CHA32 = 260,
PFM_PMU_INTEL_KNL_UNC_CHA33 = 261,
PFM_PMU_INTEL_KNL_UNC_CHA34 = 262,
PFM_PMU_INTEL_KNL_UNC_CHA35 = 263,
PFM_PMU_INTEL_KNL_UNC_CHA36 = 264,
PFM_PMU_INTEL_KNL_UNC_CHA37 = 265,
PFM_PMU_INTEL_KNL_UNC_UBOX = 266,
PFM_PMU_INTEL_KNL_UNC_M2PCIE = 267,
PFM_PMU_POWER9 = 268,
PFM_PMU_INTEL_BDX_UNC_CB0 = 269,
PFM_PMU_INTEL_BDX_UNC_CB1 = 270,
PFM_PMU_INTEL_BDX_UNC_CB2 = 271,
PFM_PMU_INTEL_BDX_UNC_CB3 = 272,
PFM_PMU_INTEL_BDX_UNC_CB4 = 273,
PFM_PMU_INTEL_BDX_UNC_CB5 = 274,
PFM_PMU_INTEL_BDX_UNC_CB6 = 275,
PFM_PMU_INTEL_BDX_UNC_CB7 = 276,
PFM_PMU_INTEL_BDX_UNC_CB8 = 277,
PFM_PMU_INTEL_BDX_UNC_CB9 = 278,
PFM_PMU_INTEL_BDX_UNC_CB10 = 279,
PFM_PMU_INTEL_BDX_UNC_CB11 = 280,
PFM_PMU_INTEL_BDX_UNC_CB12 = 281,
PFM_PMU_INTEL_BDX_UNC_CB13 = 282,
PFM_PMU_INTEL_BDX_UNC_CB14 = 283,
PFM_PMU_INTEL_BDX_UNC_CB15 = 284,
PFM_PMU_INTEL_BDX_UNC_CB16 = 285,
PFM_PMU_INTEL_BDX_UNC_CB17 = 286,
PFM_PMU_INTEL_BDX_UNC_CB18 = 287,
PFM_PMU_INTEL_BDX_UNC_CB19 = 288,
PFM_PMU_INTEL_BDX_UNC_CB20 = 289,
PFM_PMU_INTEL_BDX_UNC_CB21 = 290,
PFM_PMU_INTEL_BDX_UNC_CB22 = 291,
PFM_PMU_INTEL_BDX_UNC_CB23 = 292,
PFM_PMU_INTEL_BDX_UNC_HA0 = 293,
PFM_PMU_INTEL_BDX_UNC_HA1 = 294,
PFM_PMU_INTEL_BDX_UNC_IMC0 = 295,
PFM_PMU_INTEL_BDX_UNC_IMC1 = 296,
PFM_PMU_INTEL_BDX_UNC_IMC2 = 297,
PFM_PMU_INTEL_BDX_UNC_IMC3 = 298,
PFM_PMU_INTEL_BDX_UNC_IMC4 = 299,
PFM_PMU_INTEL_BDX_UNC_IMC5 = 300,
PFM_PMU_INTEL_BDX_UNC_IMC6 = 301,
PFM_PMU_INTEL_BDX_UNC_IMC7 = 302,
PFM_PMU_INTEL_BDX_UNC_PCU = 303,
PFM_PMU_INTEL_BDX_UNC_QPI0 = 304,
PFM_PMU_INTEL_BDX_UNC_QPI1 = 305,
PFM_PMU_INTEL_BDX_UNC_QPI2 = 306,
PFM_PMU_INTEL_BDX_UNC_UBOX = 307,
PFM_PMU_INTEL_BDX_UNC_R2PCIE = 308,
PFM_PMU_INTEL_BDX_UNC_R3QPI0 = 309,
PFM_PMU_INTEL_BDX_UNC_R3QPI1 = 310,
PFM_PMU_INTEL_BDX_UNC_R3QPI2 = 311,
PFM_PMU_INTEL_BDX_UNC_IRP = 312,
PFM_PMU_INTEL_BDX_UNC_SB0 = 313,
PFM_PMU_INTEL_BDX_UNC_SB1 = 314,
PFM_PMU_INTEL_BDX_UNC_SB2 = 315,
PFM_PMU_INTEL_BDX_UNC_SB3 = 316,
PFM_PMU_AMD64_FAM17H = 317,
PFM_PMU_AMD64_FAM16H = 318,
PFM_PMU_INTEL_SKX = 319,
PFM_PMU_INTEL_SKX_UNC_CHA0 = 320,
PFM_PMU_INTEL_SKX_UNC_CHA1 = 321,
PFM_PMU_INTEL_SKX_UNC_CHA2 = 322,
PFM_PMU_INTEL_SKX_UNC_CHA3 = 323,
PFM_PMU_INTEL_SKX_UNC_CHA4 = 324,
PFM_PMU_INTEL_SKX_UNC_CHA5 = 325,
PFM_PMU_INTEL_SKX_UNC_CHA6 = 326,
PFM_PMU_INTEL_SKX_UNC_CHA7 = 327,
PFM_PMU_INTEL_SKX_UNC_CHA8 = 328,
PFM_PMU_INTEL_SKX_UNC_CHA9 = 329,
PFM_PMU_INTEL_SKX_UNC_CHA10 = 330,
PFM_PMU_INTEL_SKX_UNC_CHA11 = 331,
PFM_PMU_INTEL_SKX_UNC_CHA12 = 332,
PFM_PMU_INTEL_SKX_UNC_CHA13 = 333,
PFM_PMU_INTEL_SKX_UNC_CHA14 = 334,
PFM_PMU_INTEL_SKX_UNC_CHA15 = 335,
PFM_PMU_INTEL_SKX_UNC_CHA16 = 336,
PFM_PMU_INTEL_SKX_UNC_CHA17 = 337,
PFM_PMU_INTEL_SKX_UNC_CHA18 = 338,
PFM_PMU_INTEL_SKX_UNC_CHA19 = 339,
PFM_PMU_INTEL_SKX_UNC_CHA20 = 340,
PFM_PMU_INTEL_SKX_UNC_CHA21 = 341,
PFM_PMU_INTEL_SKX_UNC_CHA22 = 342,
PFM_PMU_INTEL_SKX_UNC_CHA23 = 343,
PFM_PMU_INTEL_SKX_UNC_CHA24 = 344,
PFM_PMU_INTEL_SKX_UNC_CHA25 = 345,
PFM_PMU_INTEL_SKX_UNC_CHA26 = 346,
PFM_PMU_INTEL_SKX_UNC_CHA27 = 347,
PFM_PMU_INTEL_SKX_UNC_IIO0 = 348,
PFM_PMU_INTEL_SKX_UNC_IIO1 = 349,
PFM_PMU_INTEL_SKX_UNC_IIO2 = 350,
PFM_PMU_INTEL_SKX_UNC_IIO3 = 351,
PFM_PMU_INTEL_SKX_UNC_IIO4 = 352,
PFM_PMU_INTEL_SKX_UNC_IIO5 = 353,
PFM_PMU_INTEL_SKX_UNC_IMC0 = 354,
PFM_PMU_INTEL_SKX_UNC_IMC1 = 355,
PFM_PMU_INTEL_SKX_UNC_IMC2 = 356,
PFM_PMU_INTEL_SKX_UNC_IMC3 = 357,
PFM_PMU_INTEL_SKX_UNC_IMC4 = 358,
PFM_PMU_INTEL_SKX_UNC_IMC5 = 359,
PFM_PMU_INTEL_SKX_UNC_IRP = 360,
PFM_PMU_INTEL_SKX_UNC_M2M0 = 361,
PFM_PMU_INTEL_SKX_UNC_M2M1 = 362,
PFM_PMU_INTEL_SKX_UNC_M3UPI0 = 363,
PFM_PMU_INTEL_SKX_UNC_M3UPI1 = 364,
PFM_PMU_INTEL_SKX_UNC_M3UPI2 = 365,
PFM_PMU_INTEL_SKX_UNC_PCU = 366,
PFM_PMU_INTEL_SKX_UNC_UBOX = 367,
PFM_PMU_INTEL_SKX_UNC_UPI0 = 368,
PFM_PMU_INTEL_SKX_UNC_UPI1 = 369,
PFM_PMU_INTEL_SKX_UNC_UPI2 = 370,
PFM_PMU_INTEL_KNM = 371,
PFM_PMU_INTEL_KNM_UNC_IMC0 = 372,
PFM_PMU_INTEL_KNM_UNC_IMC1 = 373,
PFM_PMU_INTEL_KNM_UNC_IMC2 = 374,
PFM_PMU_INTEL_KNM_UNC_IMC3 = 375,
PFM_PMU_INTEL_KNM_UNC_IMC4 = 376,
PFM_PMU_INTEL_KNM_UNC_IMC5 = 377,
PFM_PMU_INTEL_KNM_UNC_IMC_UCLK0 = 378,
PFM_PMU_INTEL_KNM_UNC_IMC_UCLK1 = 379,
PFM_PMU_INTEL_KNM_UNC_EDC_ECLK0 = 380,
PFM_PMU_INTEL_KNM_UNC_EDC_ECLK1 = 381,
PFM_PMU_INTEL_KNM_UNC_EDC_ECLK2 = 382,
PFM_PMU_INTEL_KNM_UNC_EDC_ECLK3 = 383,
PFM_PMU_INTEL_KNM_UNC_EDC_ECLK4 = 384,
PFM_PMU_INTEL_KNM_UNC_EDC_ECLK5 = 385,
PFM_PMU_INTEL_KNM_UNC_EDC_ECLK6 = 386,
PFM_PMU_INTEL_KNM_UNC_EDC_ECLK7 = 387,
PFM_PMU_INTEL_KNM_UNC_EDC_UCLK0 = 388,
PFM_PMU_INTEL_KNM_UNC_EDC_UCLK1 = 389,
PFM_PMU_INTEL_KNM_UNC_EDC_UCLK2 = 390,
PFM_PMU_INTEL_KNM_UNC_EDC_UCLK3 = 391,
PFM_PMU_INTEL_KNM_UNC_EDC_UCLK4 = 392,
PFM_PMU_INTEL_KNM_UNC_EDC_UCLK5 = 393,
PFM_PMU_INTEL_KNM_UNC_EDC_UCLK6 = 394,
PFM_PMU_INTEL_KNM_UNC_EDC_UCLK7 = 395,
PFM_PMU_INTEL_KNM_UNC_CHA0 = 396,
PFM_PMU_INTEL_KNM_UNC_CHA1 = 397,
PFM_PMU_INTEL_KNM_UNC_CHA2 = 398,
PFM_PMU_INTEL_KNM_UNC_CHA3 = 399,
PFM_PMU_INTEL_KNM_UNC_CHA4 = 400,
PFM_PMU_INTEL_KNM_UNC_CHA5 = 401,
PFM_PMU_INTEL_KNM_UNC_CHA6 = 402,
PFM_PMU_INTEL_KNM_UNC_CHA7 = 403,
PFM_PMU_INTEL_KNM_UNC_CHA8 = 404,
PFM_PMU_INTEL_KNM_UNC_CHA9 = 405,
PFM_PMU_INTEL_KNM_UNC_CHA10 = 406,
PFM_PMU_INTEL_KNM_UNC_CHA11 = 407,
PFM_PMU_INTEL_KNM_UNC_CHA12 = 408,
PFM_PMU_INTEL_KNM_UNC_CHA13 = 409,
PFM_PMU_INTEL_KNM_UNC_CHA14 = 410,
PFM_PMU_INTEL_KNM_UNC_CHA15 = 411,
PFM_PMU_INTEL_KNM_UNC_CHA16 = 412,
PFM_PMU_INTEL_KNM_UNC_CHA17 = 413,
PFM_PMU_INTEL_KNM_UNC_CHA18 = 414,
PFM_PMU_INTEL_KNM_UNC_CHA19 = 415,
PFM_PMU_INTEL_KNM_UNC_CHA20 = 416,
PFM_PMU_INTEL_KNM_UNC_CHA21 = 417,
PFM_PMU_INTEL_KNM_UNC_CHA22 = 418,
PFM_PMU_INTEL_KNM_UNC_CHA23 = 419,
PFM_PMU_INTEL_KNM_UNC_CHA24 = 420,
PFM_PMU_INTEL_KNM_UNC_CHA25 = 421,
PFM_PMU_INTEL_KNM_UNC_CHA26 = 422,
PFM_PMU_INTEL_KNM_UNC_CHA27 = 423,
PFM_PMU_INTEL_KNM_UNC_CHA28 = 424,
PFM_PMU_INTEL_KNM_UNC_CHA29 = 425,
PFM_PMU_INTEL_KNM_UNC_CHA30 = 426,
PFM_PMU_INTEL_KNM_UNC_CHA31 = 427,
PFM_PMU_INTEL_KNM_UNC_CHA32 = 428,
PFM_PMU_INTEL_KNM_UNC_CHA33 = 429,
PFM_PMU_INTEL_KNM_UNC_CHA34 = 430,
PFM_PMU_INTEL_KNM_UNC_CHA35 = 431,
PFM_PMU_INTEL_KNM_UNC_CHA36 = 432,
PFM_PMU_INTEL_KNM_UNC_CHA37 = 433,
PFM_PMU_INTEL_KNM_UNC_UBOX = 434,
PFM_PMU_INTEL_KNM_UNC_M2PCIE = 435,
PFM_PMU_ARM_THUNDERX2 = 436,
PFM_PMU_INTEL_CLX = 437,
PFM_PMU_ARM_THUNDERX2_DMC0 = 438,
PFM_PMU_ARM_THUNDERX2_DMC1 = 439,
PFM_PMU_ARM_THUNDERX2_LLC0 = 440,
PFM_PMU_ARM_THUNDERX2_LLC1 = 441,
PFM_PMU_ARM_THUNDERX2_CCPI0 = 442,
PFM_PMU_ARM_THUNDERX2_CCPI1 = 443,
PFM_PMU_AMD64_FAM17H_ZEN1 = 444,
PFM_PMU_AMD64_FAM17H_ZEN2 = 445,
PFM_PMU_INTEL_TMT = 446,
PFM_PMU_INTEL_ICL = 447,
PFM_PMU_ARM_A64FX = 448,
PFM_PMU_ARM_N1 = 449,
PFM_PMU_AMD64_FAM19H_ZEN3 = 450,
PFM_PMU_AMD64_RAPL = 451,
PFM_PMU_AMD64_FAM19H_ZEN3_L3 = 452,
PFM_PMU_INTEL_ICX = 453,
PFM_PMU_ARM_N2 = 454,
PFM_PMU_ARM_KUNPENG = 455,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_DDRC0 = 456,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_DDRC1 = 457,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_DDRC2 = 458,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_DDRC3 = 459,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_DDRC0 = 460,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_DDRC1 = 461,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_DDRC2 = 462,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_DDRC3 = 463,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_DDRC0 = 464,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_DDRC1 = 465,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_DDRC2 = 466,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_DDRC3 = 467,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_DDRC0 = 468,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_DDRC1 = 469,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_DDRC2 = 470,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_DDRC3 = 471,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_HHA2 = 472,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_HHA3 = 473,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_HHA0 = 474,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_HHA1 = 475,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_HHA6 = 476,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_HHA7 = 477,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_HHA4 = 478,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_HHA5 = 479,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_L3C10 = 480,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_L3C11 = 481,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_L3C12 = 482,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_L3C13 = 483,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_L3C14 = 484,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_L3C15 = 485,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_L3C8 = 486,
PFM_PMU_ARM_KUNPENG_UNC_SCCL1_L3C9 = 487,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_L3C0 = 488,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_L3C1 = 489,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_L3C2 = 490,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_L3C3 = 491,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_L3C4 = 492,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_L3C5 = 493,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_L3C6 = 494,
PFM_PMU_ARM_KUNPENG_UNC_SCCL3_L3C7 = 495,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_L3C24 = 496,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_L3C25 = 497,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_L3C26 = 498,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_L3C27 = 499,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_L3C28 = 500,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_L3C29 = 501,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_L3C30 = 502,
PFM_PMU_ARM_KUNPENG_UNC_SCCL5_L3C31 = 503,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_L3C16 = 504,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_L3C17 = 505,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_L3C18 = 506,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_L3C19 = 507,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_L3C20 = 508,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_L3C21 = 509,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_L3C22 = 510,
PFM_PMU_ARM_KUNPENG_UNC_SCCL7_L3C23 = 511,
PFM_PMU_INTEL_SPR = 512,
PFM_PMU_POWER10 = 513,
PFM_PMU_AMD64_FAM19H_ZEN4 = 514,
PFM_PMU_AMD64_FAM19H_ZEN4_L3 = 515,
PFM_PMU_ARM_V1 = 516,
PFM_PMU_ARM_V2 = 517,
PFM_PMU_INTEL_EMR = 518,
PFM_PMU_MAX = 519,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum pfm_pmu_type_t {
PFM_PMU_TYPE_UNKNOWN = 0,
PFM_PMU_TYPE_CORE = 1,
PFM_PMU_TYPE_UNCORE = 2,
PFM_PMU_TYPE_OS_GENERIC = 3,
PFM_PMU_TYPE_MAX = 4,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum pfm_attr_t {
PFM_ATTR_NONE = 0,
PFM_ATTR_UMASK = 1,
PFM_ATTR_MOD_BOOL = 2,
PFM_ATTR_MOD_INTEGER = 3,
PFM_ATTR_RAW_UMASK = 4,
PFM_ATTR_MAX = 5,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum pfm_dtype_t {
PFM_DTYPE_UNKNOWN = 0,
PFM_DTYPE_UINT64 = 1,
PFM_DTYPE_INT64 = 2,
PFM_DTYPE_DOUBLE = 3,
PFM_DTYPE_FIXED = 4,
PFM_DTYPE_RATIO = 5,
PFM_DTYPE_CHAR8 = 6,
PFM_DTYPE_MAX = 7,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum pfm_attr_ctrl_t {
PFM_ATTR_CTRL_UNKNOWN = 0,
PFM_ATTR_CTRL_PMU = 1,
PFM_ATTR_CTRL_PERF_EVENT = 2,
PFM_ATTR_CTRL_MAX = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum pfm_os_t {
PFM_OS_NONE = 0,
PFM_OS_PERF_EVENT = 1,
PFM_OS_PERF_EVENT_EXT = 2,
PFM_OS_MAX = 3,
}
pub type pfm_err_t = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pfm_pmu_info_t {
pub name: *const ::std::os::raw::c_char,
pub desc: *const ::std::os::raw::c_char,
pub size: usize,
pub pmu: pfm_pmu_t,
pub type_: pfm_pmu_type_t,
pub nevents: ::std::os::raw::c_int,
pub first_event: ::std::os::raw::c_int,
pub max_encoding: ::std::os::raw::c_int,
pub num_cntrs: ::std::os::raw::c_int,
pub num_fixed_cntrs: ::std::os::raw::c_int,
pub __bindgen_anon_1: pfm_pmu_info_t__bindgen_ty_1,
}
#[repr(C)]
#[repr(align(4))]
#[derive(Debug, Copy, Clone)]
pub struct pfm_pmu_info_t__bindgen_ty_1 {
pub _bitfield_align_1: [u32; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
}
#[test]
fn bindgen_test_layout_pfm_pmu_info_t__bindgen_ty_1() {
assert_eq!(
::std::mem::size_of::<pfm_pmu_info_t__bindgen_ty_1>(),
4usize,
concat!("Size of: ", stringify!(pfm_pmu_info_t__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<pfm_pmu_info_t__bindgen_ty_1>(),
4usize,
concat!("Alignment of ", stringify!(pfm_pmu_info_t__bindgen_ty_1))
);
}
impl pfm_pmu_info_t__bindgen_ty_1 {
#[inline]
pub fn is_present(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
}
#[inline]
pub fn set_is_present(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub fn is_dfl(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
}
#[inline]
pub fn set_is_dfl(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(1usize, 1u8, val as u64)
}
}
#[inline]
pub fn reserved_bits(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 30u8) as u32) }
}
#[inline]
pub fn set_reserved_bits(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(2usize, 30u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(
is_present: ::std::os::raw::c_uint,
is_dfl: ::std::os::raw::c_uint,
reserved_bits: ::std::os::raw::c_uint,
) -> __BindgenBitfieldUnit<[u8; 4usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let is_present: u32 = unsafe { ::std::mem::transmute(is_present) };
is_present as u64
});
__bindgen_bitfield_unit.set(1usize, 1u8, {
let is_dfl: u32 = unsafe { ::std::mem::transmute(is_dfl) };
is_dfl as u64
});
__bindgen_bitfield_unit.set(2usize, 30u8, {
let reserved_bits: u32 = unsafe { ::std::mem::transmute(reserved_bits) };
reserved_bits as u64
});
__bindgen_bitfield_unit
}
}
#[test]
fn bindgen_test_layout_pfm_pmu_info_t() {
const UNINIT: ::std::mem::MaybeUninit<pfm_pmu_info_t> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pfm_pmu_info_t>(),
56usize,
concat!("Size of: ", stringify!(pfm_pmu_info_t))
);
assert_eq!(
::std::mem::align_of::<pfm_pmu_info_t>(),
8usize,
concat!("Alignment of ", stringify!(pfm_pmu_info_t))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(name)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).desc) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(desc)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pmu) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(pmu)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
28usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(type_)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).nevents) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(nevents)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).first_event) as usize - ptr as usize },
36usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(first_event)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).max_encoding) as usize - ptr as usize },
40usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(max_encoding)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).num_cntrs) as usize - ptr as usize },
44usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(num_cntrs)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).num_fixed_cntrs) as usize - ptr as usize },
48usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_info_t),
"::",
stringify!(num_fixed_cntrs)
)
);
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum pfm_event_info_spec_t {
PFM_EVENT_INFO_SPEC_NA = 0,
PFM_EVENT_INFO_SPEC_TRUE = 1,
PFM_EVENT_INFO_SPEC_FALSE = 2,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pfm_event_info_t {
pub name: *const ::std::os::raw::c_char,
pub desc: *const ::std::os::raw::c_char,
pub equiv: *const ::std::os::raw::c_char,
pub size: usize,
pub code: u64,
pub pmu: pfm_pmu_t,
pub dtype: pfm_dtype_t,
pub idx: ::std::os::raw::c_int,
pub nattrs: ::std::os::raw::c_int,
pub reserved: ::std::os::raw::c_int,
pub __bindgen_anon_1: pfm_event_info_t__bindgen_ty_1,
}
#[repr(C)]
#[repr(align(4))]
#[derive(Debug, Copy, Clone)]
pub struct pfm_event_info_t__bindgen_ty_1 {
pub _bitfield_align_1: [u32; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
}
#[test]
fn bindgen_test_layout_pfm_event_info_t__bindgen_ty_1() {
assert_eq!(
::std::mem::size_of::<pfm_event_info_t__bindgen_ty_1>(),
4usize,
concat!("Size of: ", stringify!(pfm_event_info_t__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<pfm_event_info_t__bindgen_ty_1>(),
4usize,
concat!("Alignment of ", stringify!(pfm_event_info_t__bindgen_ty_1))
);
}
impl pfm_event_info_t__bindgen_ty_1 {
#[inline]
pub fn is_precise(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
}
#[inline]
pub fn set_is_precise(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub fn is_speculative(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
}
#[inline]
pub fn set_is_speculative(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(1usize, 2u8, val as u64)
}
}
#[inline]
pub fn support_hw_smpl(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
}
#[inline]
pub fn set_support_hw_smpl(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(3usize, 1u8, val as u64)
}
}
#[inline]
pub fn reserved_bits(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 28u8) as u32) }
}
#[inline]
pub fn set_reserved_bits(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(4usize, 28u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(
is_precise: ::std::os::raw::c_uint,
is_speculative: ::std::os::raw::c_uint,
support_hw_smpl: ::std::os::raw::c_uint,
reserved_bits: ::std::os::raw::c_uint,
) -> __BindgenBitfieldUnit<[u8; 4usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let is_precise: u32 = unsafe { ::std::mem::transmute(is_precise) };
is_precise as u64
});
__bindgen_bitfield_unit.set(1usize, 2u8, {
let is_speculative: u32 = unsafe { ::std::mem::transmute(is_speculative) };
is_speculative as u64
});
__bindgen_bitfield_unit.set(3usize, 1u8, {
let support_hw_smpl: u32 = unsafe { ::std::mem::transmute(support_hw_smpl) };
support_hw_smpl as u64
});
__bindgen_bitfield_unit.set(4usize, 28u8, {
let reserved_bits: u32 = unsafe { ::std::mem::transmute(reserved_bits) };
reserved_bits as u64
});
__bindgen_bitfield_unit
}
}
#[test]
fn bindgen_test_layout_pfm_event_info_t() {
const UNINIT: ::std::mem::MaybeUninit<pfm_event_info_t> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pfm_event_info_t>(),
64usize,
concat!("Size of: ", stringify!(pfm_event_info_t))
);
assert_eq!(
::std::mem::align_of::<pfm_event_info_t>(),
8usize,
concat!("Alignment of ", stringify!(pfm_event_info_t))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(name)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).desc) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(desc)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).equiv) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(equiv)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(code)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pmu) as usize - ptr as usize },
40usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(pmu)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).dtype) as usize - ptr as usize },
44usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(dtype)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).idx) as usize - ptr as usize },
48usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(idx)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).nattrs) as usize - ptr as usize },
52usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(nattrs)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize },
56usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_info_t),
"::",
stringify!(reserved)
)
);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct pfm_event_attr_info_t {
pub name: *const ::std::os::raw::c_char,
pub desc: *const ::std::os::raw::c_char,
pub equiv: *const ::std::os::raw::c_char,
pub size: usize,
pub code: u64,
pub type_: pfm_attr_t,
pub idx: ::std::os::raw::c_int,
pub ctrl: pfm_attr_ctrl_t,
pub __bindgen_anon_1: pfm_event_attr_info_t__bindgen_ty_1,
pub __bindgen_anon_2: pfm_event_attr_info_t__bindgen_ty_2,
}
#[repr(C)]
#[repr(align(4))]
#[derive(Debug, Copy, Clone)]
pub struct pfm_event_attr_info_t__bindgen_ty_1 {
pub _bitfield_align_1: [u32; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
}
#[test]
fn bindgen_test_layout_pfm_event_attr_info_t__bindgen_ty_1() {
assert_eq!(
::std::mem::size_of::<pfm_event_attr_info_t__bindgen_ty_1>(),
4usize,
concat!("Size of: ", stringify!(pfm_event_attr_info_t__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<pfm_event_attr_info_t__bindgen_ty_1>(),
4usize,
concat!(
"Alignment of ",
stringify!(pfm_event_attr_info_t__bindgen_ty_1)
)
);
}
impl pfm_event_attr_info_t__bindgen_ty_1 {
#[inline]
pub fn is_dfl(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
}
#[inline]
pub fn set_is_dfl(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub fn is_precise(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
}
#[inline]
pub fn set_is_precise(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(1usize, 1u8, val as u64)
}
}
#[inline]
pub fn is_speculative(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 2u8) as u32) }
}
#[inline]
pub fn set_is_speculative(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(2usize, 2u8, val as u64)
}
}
#[inline]
pub fn support_hw_smpl(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
}
#[inline]
pub fn set_support_hw_smpl(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(4usize, 1u8, val as u64)
}
}
#[inline]
pub fn reserved_bits(&self) -> ::std::os::raw::c_uint {
unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 27u8) as u32) }
}
#[inline]
pub fn set_reserved_bits(&mut self, val: ::std::os::raw::c_uint) {
unsafe {
let val: u32 = ::std::mem::transmute(val);
self._bitfield_1.set(5usize, 27u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(
is_dfl: ::std::os::raw::c_uint,
is_precise: ::std::os::raw::c_uint,
is_speculative: ::std::os::raw::c_uint,
support_hw_smpl: ::std::os::raw::c_uint,
reserved_bits: ::std::os::raw::c_uint,
) -> __BindgenBitfieldUnit<[u8; 4usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let is_dfl: u32 = unsafe { ::std::mem::transmute(is_dfl) };
is_dfl as u64
});
__bindgen_bitfield_unit.set(1usize, 1u8, {
let is_precise: u32 = unsafe { ::std::mem::transmute(is_precise) };
is_precise as u64
});
__bindgen_bitfield_unit.set(2usize, 2u8, {
let is_speculative: u32 = unsafe { ::std::mem::transmute(is_speculative) };
is_speculative as u64
});
__bindgen_bitfield_unit.set(4usize, 1u8, {
let support_hw_smpl: u32 = unsafe { ::std::mem::transmute(support_hw_smpl) };
support_hw_smpl as u64
});
__bindgen_bitfield_unit.set(5usize, 27u8, {
let reserved_bits: u32 = unsafe { ::std::mem::transmute(reserved_bits) };
reserved_bits as u64
});
__bindgen_bitfield_unit
}
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union pfm_event_attr_info_t__bindgen_ty_2 {
pub dfl_val64: u64,
pub dfl_str: *const ::std::os::raw::c_char,
pub dfl_bool: ::std::os::raw::c_int,
pub dfl_int: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_pfm_event_attr_info_t__bindgen_ty_2() {
const UNINIT: ::std::mem::MaybeUninit<pfm_event_attr_info_t__bindgen_ty_2> =
::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pfm_event_attr_info_t__bindgen_ty_2>(),
8usize,
concat!("Size of: ", stringify!(pfm_event_attr_info_t__bindgen_ty_2))
);
assert_eq!(
::std::mem::align_of::<pfm_event_attr_info_t__bindgen_ty_2>(),
8usize,
concat!(
"Alignment of ",
stringify!(pfm_event_attr_info_t__bindgen_ty_2)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).dfl_val64) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t__bindgen_ty_2),
"::",
stringify!(dfl_val64)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).dfl_str) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t__bindgen_ty_2),
"::",
stringify!(dfl_str)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).dfl_bool) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t__bindgen_ty_2),
"::",
stringify!(dfl_bool)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).dfl_int) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t__bindgen_ty_2),
"::",
stringify!(dfl_int)
)
);
}
#[test]
fn bindgen_test_layout_pfm_event_attr_info_t() {
const UNINIT: ::std::mem::MaybeUninit<pfm_event_attr_info_t> =
::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pfm_event_attr_info_t>(),
64usize,
concat!("Size of: ", stringify!(pfm_event_attr_info_t))
);
assert_eq!(
::std::mem::align_of::<pfm_event_attr_info_t>(),
8usize,
concat!("Alignment of ", stringify!(pfm_event_attr_info_t))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t),
"::",
stringify!(name)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).desc) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t),
"::",
stringify!(desc)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).equiv) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t),
"::",
stringify!(equiv)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t),
"::",
stringify!(size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t),
"::",
stringify!(code)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
40usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t),
"::",
stringify!(type_)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).idx) as usize - ptr as usize },
44usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t),
"::",
stringify!(idx)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).ctrl) as usize - ptr as usize },
48usize,
concat!(
"Offset of field: ",
stringify!(pfm_event_attr_info_t),
"::",
stringify!(ctrl)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pfm_pmu_encode_arg_t {
pub codes: *mut u64,
pub fstr: *mut *mut ::std::os::raw::c_char,
pub size: usize,
pub count: ::std::os::raw::c_int,
pub idx: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_pfm_pmu_encode_arg_t() {
const UNINIT: ::std::mem::MaybeUninit<pfm_pmu_encode_arg_t> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pfm_pmu_encode_arg_t>(),
32usize,
concat!("Size of: ", stringify!(pfm_pmu_encode_arg_t))
);
assert_eq!(
::std::mem::align_of::<pfm_pmu_encode_arg_t>(),
8usize,
concat!("Alignment of ", stringify!(pfm_pmu_encode_arg_t))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).codes) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_encode_arg_t),
"::",
stringify!(codes)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).fstr) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_encode_arg_t),
"::",
stringify!(fstr)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_encode_arg_t),
"::",
stringify!(size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_encode_arg_t),
"::",
stringify!(count)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).idx) as usize - ptr as usize },
28usize,
concat!(
"Offset of field: ",
stringify!(pfm_pmu_encode_arg_t),
"::",
stringify!(idx)
)
);
}
extern "C" {
pub fn pfm_initialize() -> pfm_err_t;
}
extern "C" {
pub fn pfm_terminate();
}
extern "C" {
pub fn pfm_strerror(code: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn pfm_get_version() -> ::std::os::raw::c_int;
}
extern "C" {
pub fn pfm_get_pmu_info(pmu: pfm_pmu_t, output: *mut pfm_pmu_info_t) -> pfm_err_t;
}
extern "C" {
pub fn pfm_get_event_next(idx: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
pub fn pfm_find_event(str_: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
}
extern "C" {
pub fn pfm_get_event_info(
idx: ::std::os::raw::c_int,
os: pfm_os_t,
output: *mut pfm_event_info_t,
) -> pfm_err_t;
}
extern "C" {
pub fn pfm_get_os_event_encoding(
str_: *const ::std::os::raw::c_char,
dfl_plm: ::std::os::raw::c_int,
os: pfm_os_t,
args: *mut ::std::os::raw::c_void,
) -> pfm_err_t;
}
extern "C" {
pub fn pfm_get_event_attr_info(
eidx: ::std::os::raw::c_int,
aidx: ::std::os::raw::c_int,
os: pfm_os_t,
output: *mut pfm_event_attr_info_t,
) -> pfm_err_t;
}
extern "C" {
pub fn pfm_pmu_validate(pmu_id: pfm_pmu_t, fp: *mut FILE) -> pfm_err_t;
}
extern "C" {
pub fn pfm_get_event_encoding(
str_: *const ::std::os::raw::c_char,
dfl_plm: ::std::os::raw::c_int,
fstr: *mut *mut ::std::os::raw::c_char,
idx: *mut ::std::os::raw::c_int,
codes: *mut *mut u64,
count: *mut ::std::os::raw::c_int,
) -> pfm_err_t;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id {
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(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_hw_id {
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(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_hw_cache_id {
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(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_hw_cache_op_id {
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(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_hw_cache_op_result_id {
PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
PERF_COUNT_HW_CACHE_RESULT_MAX = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_sw_ids {
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_CGROUP_SWITCHES = 11,
PERF_COUNT_SW_MAX = 12,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_event_sample_format {
PERF_SAMPLE_IP = 1,
PERF_SAMPLE_TID = 2,
PERF_SAMPLE_TIME = 4,
PERF_SAMPLE_ADDR = 8,
PERF_SAMPLE_READ = 16,
PERF_SAMPLE_CALLCHAIN = 32,
PERF_SAMPLE_ID = 64,
PERF_SAMPLE_CPU = 128,
PERF_SAMPLE_PERIOD = 256,
PERF_SAMPLE_STREAM_ID = 512,
PERF_SAMPLE_RAW = 1024,
PERF_SAMPLE_BRANCH_STACK = 2048,
PERF_SAMPLE_REGS_USER = 4096,
PERF_SAMPLE_STACK_USER = 8192,
PERF_SAMPLE_WEIGHT = 16384,
PERF_SAMPLE_DATA_SRC = 32768,
PERF_SAMPLE_IDENTIFIER = 65536,
PERF_SAMPLE_TRANSACTION = 131072,
PERF_SAMPLE_REGS_INTR = 262144,
PERF_SAMPLE_PHYS_ADDR = 524288,
PERF_SAMPLE_AUX = 1048576,
PERF_SAMPLE_CGROUP = 2097152,
PERF_SAMPLE_DATA_PAGE_SIZE = 4194304,
PERF_SAMPLE_CODE_PAGE_SIZE = 8388608,
PERF_SAMPLE_WEIGHT_STRUCT = 16777216,
PERF_SAMPLE_MAX = 33554432,
}
pub const PERF_TXN_ELISION: _bindgen_ty_4 = 1;
pub const PERF_TXN_TRANSACTION: _bindgen_ty_4 = 2;
pub const PERF_TXN_SYNC: _bindgen_ty_4 = 4;
pub const PERF_TXN_ASYNC: _bindgen_ty_4 = 8;
pub const PERF_TXN_RETRY: _bindgen_ty_4 = 16;
pub const PERF_TXN_CONFLICT: _bindgen_ty_4 = 32;
pub const PERF_TXN_CAPACITY_WRITE: _bindgen_ty_4 = 64;
pub const PERF_TXN_CAPACITY_READ: _bindgen_ty_4 = 128;
pub const PERF_TXN_MAX: _bindgen_ty_4 = 256;
pub const PERF_TXN_ABORT_MASK: _bindgen_ty_4 = 18446744069414584320;
pub const PERF_TXN_ABORT_SHIFT: _bindgen_ty_4 = 32;
pub type _bindgen_ty_4 = ::std::os::raw::c_ulong;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_branch_sample_type_shift {
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,
}
impl perf_branch_sample_type {
pub const PERF_SAMPLE_BRANCH_CALL: perf_branch_sample_type =
perf_branch_sample_type::PERF_SAMPLE_BRANCH_IND_CALL;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_branch_sample_type {
PERF_SAMPLE_BRANCH_USER = 1,
PERF_SAMPLE_BRANCH_KERNEL = 2,
PERF_SAMPLE_BRANCH_HV = 4,
PERF_SAMPLE_BRANCH_ANY = 8,
PERF_SAMPLE_BRANCH_ANY_CALL = 16,
PERF_SAMPLE_BRANCH_ANY_RETURN = 32,
PERF_SAMPLE_BRANCH_IND_CALL = 64,
PERF_SAMPLE_BRANCH_ABORT_TX = 128,
PERF_SAMPLE_BRANCH_IN_TX = 256,
PERF_SAMPLE_BRANCH_NO_TX = 512,
PERF_SAMPLE_BRANCH_COND = 1024,
PERF_SAMPLE_BRANCH_CALL_STACK = 2048,
PERF_SAMPLE_BRANCH_IND_JUMP = 4096,
PERF_SAMPLE_BRANCH_NO_FLAGS = 16384,
PERF_SAMPLE_BRANCH_NO_CYCLES = 32768,
PERF_SAMPLE_BRANCH_TYPE_SAVE = 65536,
PERF_SAMPLE_BRANCH_HW_INDEX = 131072,
PERF_SAMPLE_BRANCH_MAX = 262144,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_sample_regs_abi {
PERF_SAMPLE_REGS_ABI_NONE = 0,
PERF_SAMPLE_REGS_ABI_32 = 1,
PERF_SAMPLE_REGS_ABI_64 = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_event_read_format {
PERF_FORMAT_TOTAL_TIME_ENABLED = 1,
PERF_FORMAT_TOTAL_TIME_RUNNING = 2,
PERF_FORMAT_ID = 4,
PERF_FORMAT_GROUP = 8,
PERF_FORMAT_MAX = 16,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct perf_event_attr {
pub type_: u32,
pub size: u32,
pub config: u64,
pub __bindgen_anon_1: perf_event_attr__bindgen_ty_1,
pub sample_type: u64,
pub read_format: u64,
pub _bitfield_align_1: [u32; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
pub __bindgen_anon_2: perf_event_attr__bindgen_ty_2,
pub bp_type: u32,
pub __bindgen_anon_3: perf_event_attr__bindgen_ty_3,
pub __bindgen_anon_4: perf_event_attr__bindgen_ty_4,
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,
pub __reserved_2: u16,
pub aux_sample_size: u32,
pub __reserved_3: u32,
pub sig_data: u64,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union perf_event_attr__bindgen_ty_1 {
pub sample_period: u64,
pub sample_freq: u64,
}
#[test]
fn bindgen_test_layout_perf_event_attr__bindgen_ty_1() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_attr__bindgen_ty_1> =
::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_attr__bindgen_ty_1>(),
8usize,
concat!("Size of: ", stringify!(perf_event_attr__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<perf_event_attr__bindgen_ty_1>(),
8usize,
concat!("Alignment of ", stringify!(perf_event_attr__bindgen_ty_1))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sample_period) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr__bindgen_ty_1),
"::",
stringify!(sample_period)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sample_freq) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr__bindgen_ty_1),
"::",
stringify!(sample_freq)
)
);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union perf_event_attr__bindgen_ty_2 {
pub wakeup_events: u32,
pub wakeup_watermark: u32,
}
#[test]
fn bindgen_test_layout_perf_event_attr__bindgen_ty_2() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_attr__bindgen_ty_2> =
::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_attr__bindgen_ty_2>(),
4usize,
concat!("Size of: ", stringify!(perf_event_attr__bindgen_ty_2))
);
assert_eq!(
::std::mem::align_of::<perf_event_attr__bindgen_ty_2>(),
4usize,
concat!("Alignment of ", stringify!(perf_event_attr__bindgen_ty_2))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).wakeup_events) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr__bindgen_ty_2),
"::",
stringify!(wakeup_events)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).wakeup_watermark) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr__bindgen_ty_2),
"::",
stringify!(wakeup_watermark)
)
);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union perf_event_attr__bindgen_ty_3 {
pub bp_addr: u64,
pub config1: u64,
}
#[test]
fn bindgen_test_layout_perf_event_attr__bindgen_ty_3() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_attr__bindgen_ty_3> =
::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_attr__bindgen_ty_3>(),
8usize,
concat!("Size of: ", stringify!(perf_event_attr__bindgen_ty_3))
);
assert_eq!(
::std::mem::align_of::<perf_event_attr__bindgen_ty_3>(),
8usize,
concat!("Alignment of ", stringify!(perf_event_attr__bindgen_ty_3))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).bp_addr) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr__bindgen_ty_3),
"::",
stringify!(bp_addr)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).config1) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr__bindgen_ty_3),
"::",
stringify!(config1)
)
);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union perf_event_attr__bindgen_ty_4 {
pub bp_len: u64,
pub config2: u64,
}
#[test]
fn bindgen_test_layout_perf_event_attr__bindgen_ty_4() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_attr__bindgen_ty_4> =
::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_attr__bindgen_ty_4>(),
8usize,
concat!("Size of: ", stringify!(perf_event_attr__bindgen_ty_4))
);
assert_eq!(
::std::mem::align_of::<perf_event_attr__bindgen_ty_4>(),
8usize,
concat!("Alignment of ", stringify!(perf_event_attr__bindgen_ty_4))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).bp_len) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr__bindgen_ty_4),
"::",
stringify!(bp_len)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).config2) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr__bindgen_ty_4),
"::",
stringify!(config2)
)
);
}
#[test]
fn bindgen_test_layout_perf_event_attr() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_attr> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_attr>(),
128usize,
concat!("Size of: ", stringify!(perf_event_attr))
);
assert_eq!(
::std::mem::align_of::<perf_event_attr>(),
8usize,
concat!("Alignment of ", stringify!(perf_event_attr))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(type_)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).config) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(config)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sample_type) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(sample_type)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).read_format) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(read_format)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).bp_type) as usize - ptr as usize },
52usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(bp_type)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).branch_sample_type) as usize - ptr as usize },
72usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(branch_sample_type)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sample_regs_user) as usize - ptr as usize },
80usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(sample_regs_user)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sample_stack_user) as usize - ptr as usize },
88usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(sample_stack_user)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).clockid) as usize - ptr as usize },
92usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(clockid)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sample_regs_intr) as usize - ptr as usize },
96usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(sample_regs_intr)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).aux_watermark) as usize - ptr as usize },
104usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(aux_watermark)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sample_max_stack) as usize - ptr as usize },
108usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(sample_max_stack)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).__reserved_2) as usize - ptr as usize },
110usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(__reserved_2)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).aux_sample_size) as usize - ptr as usize },
112usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(aux_sample_size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).__reserved_3) as usize - ptr as usize },
116usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(__reserved_3)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).sig_data) as usize - ptr as usize },
120usize,
concat!(
"Offset of field: ",
stringify!(perf_event_attr),
"::",
stringify!(sig_data)
)
);
}
impl perf_event_attr {
#[inline]
pub fn disabled(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u64) }
}
#[inline]
pub fn set_disabled(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub fn inherit(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u64) }
}
#[inline]
pub fn set_inherit(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(1usize, 1u8, val as u64)
}
}
#[inline]
pub fn pinned(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u64) }
}
#[inline]
pub fn set_pinned(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(2usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclusive(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclusive(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(3usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclude_user(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclude_user(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(4usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclude_kernel(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclude_kernel(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(5usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclude_hv(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclude_hv(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(6usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclude_idle(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclude_idle(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(7usize, 1u8, val as u64)
}
}
#[inline]
pub fn mmap(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u64) }
}
#[inline]
pub fn set_mmap(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(8usize, 1u8, val as u64)
}
}
#[inline]
pub fn comm(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u64) }
}
#[inline]
pub fn set_comm(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(9usize, 1u8, val as u64)
}
}
#[inline]
pub fn freq(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u64) }
}
#[inline]
pub fn set_freq(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(10usize, 1u8, val as u64)
}
}
#[inline]
pub fn inherit_stat(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u64) }
}
#[inline]
pub fn set_inherit_stat(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(11usize, 1u8, val as u64)
}
}
#[inline]
pub fn enable_on_exec(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u64) }
}
#[inline]
pub fn set_enable_on_exec(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(12usize, 1u8, val as u64)
}
}
#[inline]
pub fn task(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u64) }
}
#[inline]
pub fn set_task(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(13usize, 1u8, val as u64)
}
}
#[inline]
pub fn watermark(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u64) }
}
#[inline]
pub fn set_watermark(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(14usize, 1u8, val as u64)
}
}
#[inline]
pub fn precise_ip(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(15usize, 2u8) as u64) }
}
#[inline]
pub fn set_precise_ip(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(15usize, 2u8, val as u64)
}
}
#[inline]
pub fn mmap_data(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(17usize, 1u8) as u64) }
}
#[inline]
pub fn set_mmap_data(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(17usize, 1u8, val as u64)
}
}
#[inline]
pub fn sample_id_all(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(18usize, 1u8) as u64) }
}
#[inline]
pub fn set_sample_id_all(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(18usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclude_host(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(19usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclude_host(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(19usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclude_guest(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(20usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclude_guest(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(20usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclude_callchain_kernel(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(21usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclude_callchain_kernel(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(21usize, 1u8, val as u64)
}
}
#[inline]
pub fn exclude_callchain_user(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(22usize, 1u8) as u64) }
}
#[inline]
pub fn set_exclude_callchain_user(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(22usize, 1u8, val as u64)
}
}
#[inline]
pub fn mmap2(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(23usize, 1u8) as u64) }
}
#[inline]
pub fn set_mmap2(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(23usize, 1u8, val as u64)
}
}
#[inline]
pub fn comm_exec(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(24usize, 1u8) as u64) }
}
#[inline]
pub fn set_comm_exec(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(24usize, 1u8, val as u64)
}
}
#[inline]
pub fn use_clockid(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(25usize, 1u8) as u64) }
}
#[inline]
pub fn set_use_clockid(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(25usize, 1u8, val as u64)
}
}
#[inline]
pub fn context_switch(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(26usize, 1u8) as u64) }
}
#[inline]
pub fn set_context_switch(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(26usize, 1u8, val as u64)
}
}
#[inline]
pub fn write_backward(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(27usize, 1u8) as u64) }
}
#[inline]
pub fn set_write_backward(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(27usize, 1u8, val as u64)
}
}
#[inline]
pub fn namespaces(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(28usize, 1u8) as u64) }
}
#[inline]
pub fn set_namespaces(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(28usize, 1u8, val as u64)
}
}
#[inline]
pub fn ksymbol(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(29usize, 1u8) as u64) }
}
#[inline]
pub fn set_ksymbol(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(29usize, 1u8, val as u64)
}
}
#[inline]
pub fn bpf_event(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(30usize, 1u8) as u64) }
}
#[inline]
pub fn set_bpf_event(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(30usize, 1u8, val as u64)
}
}
#[inline]
pub fn aux_output(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(31usize, 1u8) as u64) }
}
#[inline]
pub fn set_aux_output(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(31usize, 1u8, val as u64)
}
}
#[inline]
pub fn cgroup(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 1u8) as u64) }
}
#[inline]
pub fn set_cgroup(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(32usize, 1u8, val as u64)
}
}
#[inline]
pub fn text_poke(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(33usize, 1u8) as u64) }
}
#[inline]
pub fn set_text_poke(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(33usize, 1u8, val as u64)
}
}
#[inline]
pub fn build_id(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(34usize, 1u8) as u64) }
}
#[inline]
pub fn set_build_id(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(34usize, 1u8, val as u64)
}
}
#[inline]
pub fn inherit_thread(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(35usize, 1u8) as u64) }
}
#[inline]
pub fn set_inherit_thread(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(35usize, 1u8, val as u64)
}
}
#[inline]
pub fn remove_on_exec(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(36usize, 1u8) as u64) }
}
#[inline]
pub fn set_remove_on_exec(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(36usize, 1u8, val as u64)
}
}
#[inline]
pub fn sigtrap(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(37usize, 1u8) as u64) }
}
#[inline]
pub fn set_sigtrap(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(37usize, 1u8, val as u64)
}
}
#[inline]
pub fn __reserved_1(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(38usize, 26u8) as u64) }
}
#[inline]
pub fn set___reserved_1(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(38usize, 26u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(
disabled: u64,
inherit: u64,
pinned: u64,
exclusive: u64,
exclude_user: u64,
exclude_kernel: u64,
exclude_hv: u64,
exclude_idle: u64,
mmap: u64,
comm: u64,
freq: u64,
inherit_stat: u64,
enable_on_exec: u64,
task: u64,
watermark: u64,
precise_ip: u64,
mmap_data: u64,
sample_id_all: u64,
exclude_host: u64,
exclude_guest: u64,
exclude_callchain_kernel: u64,
exclude_callchain_user: u64,
mmap2: u64,
comm_exec: u64,
use_clockid: u64,
context_switch: u64,
write_backward: u64,
namespaces: u64,
ksymbol: u64,
bpf_event: u64,
aux_output: u64,
cgroup: u64,
text_poke: u64,
build_id: u64,
inherit_thread: u64,
remove_on_exec: u64,
sigtrap: u64,
__reserved_1: u64,
) -> __BindgenBitfieldUnit<[u8; 8usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let disabled: u64 = unsafe { ::std::mem::transmute(disabled) };
disabled as u64
});
__bindgen_bitfield_unit.set(1usize, 1u8, {
let inherit: u64 = unsafe { ::std::mem::transmute(inherit) };
inherit as u64
});
__bindgen_bitfield_unit.set(2usize, 1u8, {
let pinned: u64 = unsafe { ::std::mem::transmute(pinned) };
pinned as u64
});
__bindgen_bitfield_unit.set(3usize, 1u8, {
let exclusive: u64 = unsafe { ::std::mem::transmute(exclusive) };
exclusive as u64
});
__bindgen_bitfield_unit.set(4usize, 1u8, {
let exclude_user: u64 = unsafe { ::std::mem::transmute(exclude_user) };
exclude_user as u64
});
__bindgen_bitfield_unit.set(5usize, 1u8, {
let exclude_kernel: u64 = unsafe { ::std::mem::transmute(exclude_kernel) };
exclude_kernel as u64
});
__bindgen_bitfield_unit.set(6usize, 1u8, {
let exclude_hv: u64 = unsafe { ::std::mem::transmute(exclude_hv) };
exclude_hv as u64
});
__bindgen_bitfield_unit.set(7usize, 1u8, {
let exclude_idle: u64 = unsafe { ::std::mem::transmute(exclude_idle) };
exclude_idle as u64
});
__bindgen_bitfield_unit.set(8usize, 1u8, {
let mmap: u64 = unsafe { ::std::mem::transmute(mmap) };
mmap as u64
});
__bindgen_bitfield_unit.set(9usize, 1u8, {
let comm: u64 = unsafe { ::std::mem::transmute(comm) };
comm as u64
});
__bindgen_bitfield_unit.set(10usize, 1u8, {
let freq: u64 = unsafe { ::std::mem::transmute(freq) };
freq as u64
});
__bindgen_bitfield_unit.set(11usize, 1u8, {
let inherit_stat: u64 = unsafe { ::std::mem::transmute(inherit_stat) };
inherit_stat as u64
});
__bindgen_bitfield_unit.set(12usize, 1u8, {
let enable_on_exec: u64 = unsafe { ::std::mem::transmute(enable_on_exec) };
enable_on_exec as u64
});
__bindgen_bitfield_unit.set(13usize, 1u8, {
let task: u64 = unsafe { ::std::mem::transmute(task) };
task as u64
});
__bindgen_bitfield_unit.set(14usize, 1u8, {
let watermark: u64 = unsafe { ::std::mem::transmute(watermark) };
watermark as u64
});
__bindgen_bitfield_unit.set(15usize, 2u8, {
let precise_ip: u64 = unsafe { ::std::mem::transmute(precise_ip) };
precise_ip as u64
});
__bindgen_bitfield_unit.set(17usize, 1u8, {
let mmap_data: u64 = unsafe { ::std::mem::transmute(mmap_data) };
mmap_data as u64
});
__bindgen_bitfield_unit.set(18usize, 1u8, {
let sample_id_all: u64 = unsafe { ::std::mem::transmute(sample_id_all) };
sample_id_all as u64
});
__bindgen_bitfield_unit.set(19usize, 1u8, {
let exclude_host: u64 = unsafe { ::std::mem::transmute(exclude_host) };
exclude_host as u64
});
__bindgen_bitfield_unit.set(20usize, 1u8, {
let exclude_guest: u64 = unsafe { ::std::mem::transmute(exclude_guest) };
exclude_guest as u64
});
__bindgen_bitfield_unit.set(21usize, 1u8, {
let exclude_callchain_kernel: u64 =
unsafe { ::std::mem::transmute(exclude_callchain_kernel) };
exclude_callchain_kernel as u64
});
__bindgen_bitfield_unit.set(22usize, 1u8, {
let exclude_callchain_user: u64 =
unsafe { ::std::mem::transmute(exclude_callchain_user) };
exclude_callchain_user as u64
});
__bindgen_bitfield_unit.set(23usize, 1u8, {
let mmap2: u64 = unsafe { ::std::mem::transmute(mmap2) };
mmap2 as u64
});
__bindgen_bitfield_unit.set(24usize, 1u8, {
let comm_exec: u64 = unsafe { ::std::mem::transmute(comm_exec) };
comm_exec as u64
});
__bindgen_bitfield_unit.set(25usize, 1u8, {
let use_clockid: u64 = unsafe { ::std::mem::transmute(use_clockid) };
use_clockid as u64
});
__bindgen_bitfield_unit.set(26usize, 1u8, {
let context_switch: u64 = unsafe { ::std::mem::transmute(context_switch) };
context_switch as u64
});
__bindgen_bitfield_unit.set(27usize, 1u8, {
let write_backward: u64 = unsafe { ::std::mem::transmute(write_backward) };
write_backward as u64
});
__bindgen_bitfield_unit.set(28usize, 1u8, {
let namespaces: u64 = unsafe { ::std::mem::transmute(namespaces) };
namespaces as u64
});
__bindgen_bitfield_unit.set(29usize, 1u8, {
let ksymbol: u64 = unsafe { ::std::mem::transmute(ksymbol) };
ksymbol as u64
});
__bindgen_bitfield_unit.set(30usize, 1u8, {
let bpf_event: u64 = unsafe { ::std::mem::transmute(bpf_event) };
bpf_event as u64
});
__bindgen_bitfield_unit.set(31usize, 1u8, {
let aux_output: u64 = unsafe { ::std::mem::transmute(aux_output) };
aux_output as u64
});
__bindgen_bitfield_unit.set(32usize, 1u8, {
let cgroup: u64 = unsafe { ::std::mem::transmute(cgroup) };
cgroup as u64
});
__bindgen_bitfield_unit.set(33usize, 1u8, {
let text_poke: u64 = unsafe { ::std::mem::transmute(text_poke) };
text_poke as u64
});
__bindgen_bitfield_unit.set(34usize, 1u8, {
let build_id: u64 = unsafe { ::std::mem::transmute(build_id) };
build_id as u64
});
__bindgen_bitfield_unit.set(35usize, 1u8, {
let inherit_thread: u64 = unsafe { ::std::mem::transmute(inherit_thread) };
inherit_thread as u64
});
__bindgen_bitfield_unit.set(36usize, 1u8, {
let remove_on_exec: u64 = unsafe { ::std::mem::transmute(remove_on_exec) };
remove_on_exec as u64
});
__bindgen_bitfield_unit.set(37usize, 1u8, {
let sigtrap: u64 = unsafe { ::std::mem::transmute(sigtrap) };
sigtrap as u64
});
__bindgen_bitfield_unit.set(38usize, 26u8, {
let __reserved_1: u64 = unsafe { ::std::mem::transmute(__reserved_1) };
__reserved_1 as u64
});
__bindgen_bitfield_unit
}
}
pub type perf_event_attr_t = perf_event_attr;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct perf_branch_entry {
pub from: u64,
pub to: u64,
pub _bitfield_align_1: [u64; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
}
#[test]
fn bindgen_test_layout_perf_branch_entry() {
const UNINIT: ::std::mem::MaybeUninit<perf_branch_entry> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_branch_entry>(),
24usize,
concat!("Size of: ", stringify!(perf_branch_entry))
);
assert_eq!(
::std::mem::align_of::<perf_branch_entry>(),
8usize,
concat!("Alignment of ", stringify!(perf_branch_entry))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).from) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_branch_entry),
"::",
stringify!(from)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).to) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(perf_branch_entry),
"::",
stringify!(to)
)
);
}
impl perf_branch_entry {
#[inline]
pub fn mispred(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u64) }
}
#[inline]
pub fn set_mispred(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub fn predicted(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u64) }
}
#[inline]
pub fn set_predicted(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(1usize, 1u8, val as u64)
}
}
#[inline]
pub fn in_tx(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u64) }
}
#[inline]
pub fn set_in_tx(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(2usize, 1u8, val as u64)
}
}
#[inline]
pub fn abort(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u64) }
}
#[inline]
pub fn set_abort(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(3usize, 1u8, val as u64)
}
}
#[inline]
pub fn cycles(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 16u8) as u64) }
}
#[inline]
pub fn set_cycles(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(4usize, 16u8, val as u64)
}
}
#[inline]
pub fn type_(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(20usize, 4u8) as u64) }
}
#[inline]
pub fn set_type(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(20usize, 4u8, val as u64)
}
}
#[inline]
pub fn reserved(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(24usize, 40u8) as u64) }
}
#[inline]
pub fn set_reserved(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(24usize, 40u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(
mispred: u64,
predicted: u64,
in_tx: u64,
abort: u64,
cycles: u64,
type_: u64,
reserved: u64,
) -> __BindgenBitfieldUnit<[u8; 8usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let mispred: u64 = unsafe { ::std::mem::transmute(mispred) };
mispred as u64
});
__bindgen_bitfield_unit.set(1usize, 1u8, {
let predicted: u64 = unsafe { ::std::mem::transmute(predicted) };
predicted as u64
});
__bindgen_bitfield_unit.set(2usize, 1u8, {
let in_tx: u64 = unsafe { ::std::mem::transmute(in_tx) };
in_tx as u64
});
__bindgen_bitfield_unit.set(3usize, 1u8, {
let abort: u64 = unsafe { ::std::mem::transmute(abort) };
abort as u64
});
__bindgen_bitfield_unit.set(4usize, 16u8, {
let cycles: u64 = unsafe { ::std::mem::transmute(cycles) };
cycles as u64
});
__bindgen_bitfield_unit.set(20usize, 4u8, {
let type_: u64 = unsafe { ::std::mem::transmute(type_) };
type_ as u64
});
__bindgen_bitfield_unit.set(24usize, 40u8, {
let reserved: u64 = unsafe { ::std::mem::transmute(reserved) };
reserved as u64
});
__bindgen_bitfield_unit
}
}
#[repr(C)]
#[derive(Debug)]
pub struct perf_branch_stack {
pub nr: u64,
pub entries: __IncompleteArrayField<perf_branch_entry>,
}
#[test]
fn bindgen_test_layout_perf_branch_stack() {
const UNINIT: ::std::mem::MaybeUninit<perf_branch_stack> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_branch_stack>(),
8usize,
concat!("Size of: ", stringify!(perf_branch_stack))
);
assert_eq!(
::std::mem::align_of::<perf_branch_stack>(),
8usize,
concat!("Alignment of ", stringify!(perf_branch_stack))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_branch_stack),
"::",
stringify!(nr)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(perf_branch_stack),
"::",
stringify!(entries)
)
);
}
#[repr(C)]
#[derive(Debug)]
pub struct perf_event_query_bpf {
pub ids_len: u32,
pub prog_cnt: u32,
pub ids: __IncompleteArrayField<u32>,
}
#[test]
fn bindgen_test_layout_perf_event_query_bpf() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_query_bpf> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_query_bpf>(),
8usize,
concat!("Size of: ", stringify!(perf_event_query_bpf))
);
assert_eq!(
::std::mem::align_of::<perf_event_query_bpf>(),
4usize,
concat!("Alignment of ", stringify!(perf_event_query_bpf))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).ids_len) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_query_bpf),
"::",
stringify!(ids_len)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).prog_cnt) as usize - ptr as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(perf_event_query_bpf),
"::",
stringify!(prog_cnt)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).ids) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(perf_event_query_bpf),
"::",
stringify!(ids)
)
);
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_event_ioc_flags {
PERF_IOC_FLAG_GROUP = 1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct perf_event_mmap_page {
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 __bindgen_anon_1: perf_event_mmap_page__bindgen_ty_1,
pub pmc_width: u16,
pub time_shift: u16,
pub time_mult: u32,
pub time_offset: u64,
pub time_zero: u64,
pub size: u32,
pub __reserved_1: u32,
pub time_cycles: u64,
pub time_mask: u64,
pub __reserved: [u8; 928usize],
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,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union perf_event_mmap_page__bindgen_ty_1 {
pub capabilities: u64,
pub __bindgen_anon_1: perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1,
}
#[repr(C)]
#[repr(align(8))]
#[derive(Debug, Copy, Clone)]
pub struct perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
pub _bitfield_align_1: [u64; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
}
#[test]
fn bindgen_test_layout_perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1() {
assert_eq!(
::std::mem::size_of::<perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1>(),
8usize,
concat!(
"Size of: ",
stringify!(perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1)
)
);
assert_eq!(
::std::mem::align_of::<perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1>(),
8usize,
concat!(
"Alignment of ",
stringify!(perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1)
)
);
}
impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
#[inline]
pub fn cap_bit0(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u64) }
}
#[inline]
pub fn set_cap_bit0(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub fn cap_bit0_is_deprecated(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u64) }
}
#[inline]
pub fn set_cap_bit0_is_deprecated(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(1usize, 1u8, val as u64)
}
}
#[inline]
pub fn cap_usr_rdpmc(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u64) }
}
#[inline]
pub fn set_cap_usr_rdpmc(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(2usize, 1u8, val as u64)
}
}
#[inline]
pub fn cap_user_time(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u64) }
}
#[inline]
pub fn set_cap_user_time(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(3usize, 1u8, val as u64)
}
}
#[inline]
pub fn cap_user_time_zero(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u64) }
}
#[inline]
pub fn set_cap_user_time_zero(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(4usize, 1u8, val as u64)
}
}
#[inline]
pub fn cap_user_time_short(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u64) }
}
#[inline]
pub fn set_cap_user_time_short(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(5usize, 1u8, val as u64)
}
}
#[inline]
pub fn cap_____res(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 58u8) as u64) }
}
#[inline]
pub fn set_cap_____res(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(6usize, 58u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(
cap_bit0: u64,
cap_bit0_is_deprecated: u64,
cap_usr_rdpmc: u64,
cap_user_time: u64,
cap_user_time_zero: u64,
cap_user_time_short: u64,
cap_____res: u64,
) -> __BindgenBitfieldUnit<[u8; 8usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let cap_bit0: u64 = unsafe { ::std::mem::transmute(cap_bit0) };
cap_bit0 as u64
});
__bindgen_bitfield_unit.set(1usize, 1u8, {
let cap_bit0_is_deprecated: u64 =
unsafe { ::std::mem::transmute(cap_bit0_is_deprecated) };
cap_bit0_is_deprecated as u64
});
__bindgen_bitfield_unit.set(2usize, 1u8, {
let cap_usr_rdpmc: u64 = unsafe { ::std::mem::transmute(cap_usr_rdpmc) };
cap_usr_rdpmc as u64
});
__bindgen_bitfield_unit.set(3usize, 1u8, {
let cap_user_time: u64 = unsafe { ::std::mem::transmute(cap_user_time) };
cap_user_time as u64
});
__bindgen_bitfield_unit.set(4usize, 1u8, {
let cap_user_time_zero: u64 = unsafe { ::std::mem::transmute(cap_user_time_zero) };
cap_user_time_zero as u64
});
__bindgen_bitfield_unit.set(5usize, 1u8, {
let cap_user_time_short: u64 = unsafe { ::std::mem::transmute(cap_user_time_short) };
cap_user_time_short as u64
});
__bindgen_bitfield_unit.set(6usize, 58u8, {
let cap_____res: u64 = unsafe { ::std::mem::transmute(cap_____res) };
cap_____res as u64
});
__bindgen_bitfield_unit
}
}
#[test]
fn bindgen_test_layout_perf_event_mmap_page__bindgen_ty_1() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_mmap_page__bindgen_ty_1> =
::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_mmap_page__bindgen_ty_1>(),
8usize,
concat!("Size of: ", stringify!(perf_event_mmap_page__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<perf_event_mmap_page__bindgen_ty_1>(),
8usize,
concat!(
"Alignment of ",
stringify!(perf_event_mmap_page__bindgen_ty_1)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).capabilities) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page__bindgen_ty_1),
"::",
stringify!(capabilities)
)
);
}
#[test]
fn bindgen_test_layout_perf_event_mmap_page() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_mmap_page> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_mmap_page>(),
1088usize,
concat!("Size of: ", stringify!(perf_event_mmap_page))
);
assert_eq!(
::std::mem::align_of::<perf_event_mmap_page>(),
8usize,
concat!("Alignment of ", stringify!(perf_event_mmap_page))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(version)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).compat_version) as usize - ptr as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(compat_version)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).lock) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(lock)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize },
12usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(index)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).time_enabled) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(time_enabled)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).time_running) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(time_running)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pmc_width) as usize - ptr as usize },
48usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(pmc_width)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).time_shift) as usize - ptr as usize },
50usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(time_shift)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).time_mult) as usize - ptr as usize },
52usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(time_mult)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).time_offset) as usize - ptr as usize },
56usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(time_offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).time_zero) as usize - ptr as usize },
64usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(time_zero)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
72usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).__reserved_1) as usize - ptr as usize },
76usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(__reserved_1)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).time_cycles) as usize - ptr as usize },
80usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(time_cycles)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).time_mask) as usize - ptr as usize },
88usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(time_mask)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).__reserved) as usize - ptr as usize },
96usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(__reserved)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).data_head) as usize - ptr as usize },
1024usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(data_head)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).data_tail) as usize - ptr as usize },
1032usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(data_tail)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).data_offset) as usize - ptr as usize },
1040usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(data_offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).data_size) as usize - ptr as usize },
1048usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(data_size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).aux_head) as usize - ptr as usize },
1056usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(aux_head)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).aux_tail) as usize - ptr as usize },
1064usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(aux_tail)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).aux_offset) as usize - ptr as usize },
1072usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(aux_offset)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).aux_size) as usize - ptr as usize },
1080usize,
concat!(
"Offset of field: ",
stringify!(perf_event_mmap_page),
"::",
stringify!(aux_size)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct perf_event_header {
pub type_: u32,
pub misc: u16,
pub size: u16,
}
#[test]
fn bindgen_test_layout_perf_event_header() {
const UNINIT: ::std::mem::MaybeUninit<perf_event_header> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_event_header>(),
8usize,
concat!("Size of: ", stringify!(perf_event_header))
);
assert_eq!(
::std::mem::align_of::<perf_event_header>(),
4usize,
concat!("Alignment of ", stringify!(perf_event_header))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_event_header),
"::",
stringify!(type_)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).misc) as usize - ptr as usize },
4usize,
concat!(
"Offset of field: ",
stringify!(perf_event_header),
"::",
stringify!(misc)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6usize,
concat!(
"Offset of field: ",
stringify!(perf_event_header),
"::",
stringify!(size)
)
);
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_event_type {
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_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_record_ksymbol_type {
PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0,
PERF_RECORD_KSYMBOL_TYPE_BPF = 1,
PERF_RECORD_KSYMBOL_TYPE_OOL = 2,
PERF_RECORD_KSYMBOL_TYPE_MAX = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_bpf_event_type {
PERF_BPF_EVENT_UNKNOWN = 0,
PERF_BPF_EVENT_PROG_LOAD = 1,
PERF_BPF_EVENT_PROG_UNLOAD = 2,
PERF_BPF_EVENT_MAX = 3,
}
#[repr(u64)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_callchain_context {
PERF_CONTEXT_HV = 18446744073709551584,
PERF_CONTEXT_KERNEL = 18446744073709551488,
PERF_CONTEXT_USER = 18446744073709551104,
PERF_CONTEXT_GUEST = 18446744073709549568,
PERF_CONTEXT_GUEST_KERNEL = 18446744073709549440,
PERF_CONTEXT_GUEST_USER = 18446744073709549056,
PERF_CONTEXT_MAX = 18446744073709547521,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union perf_mem_data_src {
pub val: u64,
pub __bindgen_anon_1: perf_mem_data_src__bindgen_ty_1,
}
#[repr(C)]
#[repr(align(8))]
#[derive(Debug, Copy, Clone)]
pub struct perf_mem_data_src__bindgen_ty_1 {
pub _bitfield_align_1: [u32; 0],
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
}
#[test]
fn bindgen_test_layout_perf_mem_data_src__bindgen_ty_1() {
assert_eq!(
::std::mem::size_of::<perf_mem_data_src__bindgen_ty_1>(),
8usize,
concat!("Size of: ", stringify!(perf_mem_data_src__bindgen_ty_1))
);
assert_eq!(
::std::mem::align_of::<perf_mem_data_src__bindgen_ty_1>(),
8usize,
concat!("Alignment of ", stringify!(perf_mem_data_src__bindgen_ty_1))
);
}
impl perf_mem_data_src__bindgen_ty_1 {
#[inline]
pub fn mem_op(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 5u8) as u64) }
}
#[inline]
pub fn set_mem_op(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 5u8, val as u64)
}
}
#[inline]
pub fn mem_lvl(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 14u8) as u64) }
}
#[inline]
pub fn set_mem_lvl(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(5usize, 14u8, val as u64)
}
}
#[inline]
pub fn mem_snoop(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(19usize, 5u8) as u64) }
}
#[inline]
pub fn set_mem_snoop(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(19usize, 5u8, val as u64)
}
}
#[inline]
pub fn mem_lock(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(24usize, 2u8) as u64) }
}
#[inline]
pub fn set_mem_lock(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(24usize, 2u8, val as u64)
}
}
#[inline]
pub fn mem_dtlb(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(26usize, 7u8) as u64) }
}
#[inline]
pub fn set_mem_dtlb(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(26usize, 7u8, val as u64)
}
}
#[inline]
pub fn mem_lvl_num(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(33usize, 4u8) as u64) }
}
#[inline]
pub fn set_mem_lvl_num(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(33usize, 4u8, val as u64)
}
}
#[inline]
pub fn mem_remote(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(37usize, 1u8) as u64) }
}
#[inline]
pub fn set_mem_remote(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(37usize, 1u8, val as u64)
}
}
#[inline]
pub fn mem_snoopx(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(38usize, 2u8) as u64) }
}
#[inline]
pub fn set_mem_snoopx(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(38usize, 2u8, val as u64)
}
}
#[inline]
pub fn mem_blk(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(40usize, 3u8) as u64) }
}
#[inline]
pub fn set_mem_blk(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(40usize, 3u8, val as u64)
}
}
#[inline]
pub fn mem_hops(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(43usize, 3u8) as u64) }
}
#[inline]
pub fn set_mem_hops(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(43usize, 3u8, val as u64)
}
}
#[inline]
pub fn mem_rsvd(&self) -> u64 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(46usize, 18u8) as u64) }
}
#[inline]
pub fn set_mem_rsvd(&mut self, val: u64) {
unsafe {
let val: u64 = ::std::mem::transmute(val);
self._bitfield_1.set(46usize, 18u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(
mem_op: u64,
mem_lvl: u64,
mem_snoop: u64,
mem_lock: u64,
mem_dtlb: u64,
mem_lvl_num: u64,
mem_remote: u64,
mem_snoopx: u64,
mem_blk: u64,
mem_hops: u64,
mem_rsvd: u64,
) -> __BindgenBitfieldUnit<[u8; 8usize]> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
__bindgen_bitfield_unit.set(0usize, 5u8, {
let mem_op: u64 = unsafe { ::std::mem::transmute(mem_op) };
mem_op as u64
});
__bindgen_bitfield_unit.set(5usize, 14u8, {
let mem_lvl: u64 = unsafe { ::std::mem::transmute(mem_lvl) };
mem_lvl as u64
});
__bindgen_bitfield_unit.set(19usize, 5u8, {
let mem_snoop: u64 = unsafe { ::std::mem::transmute(mem_snoop) };
mem_snoop as u64
});
__bindgen_bitfield_unit.set(24usize, 2u8, {
let mem_lock: u64 = unsafe { ::std::mem::transmute(mem_lock) };
mem_lock as u64
});
__bindgen_bitfield_unit.set(26usize, 7u8, {
let mem_dtlb: u64 = unsafe { ::std::mem::transmute(mem_dtlb) };
mem_dtlb as u64
});
__bindgen_bitfield_unit.set(33usize, 4u8, {
let mem_lvl_num: u64 = unsafe { ::std::mem::transmute(mem_lvl_num) };
mem_lvl_num as u64
});
__bindgen_bitfield_unit.set(37usize, 1u8, {
let mem_remote: u64 = unsafe { ::std::mem::transmute(mem_remote) };
mem_remote as u64
});
__bindgen_bitfield_unit.set(38usize, 2u8, {
let mem_snoopx: u64 = unsafe { ::std::mem::transmute(mem_snoopx) };
mem_snoopx as u64
});
__bindgen_bitfield_unit.set(40usize, 3u8, {
let mem_blk: u64 = unsafe { ::std::mem::transmute(mem_blk) };
mem_blk as u64
});
__bindgen_bitfield_unit.set(43usize, 3u8, {
let mem_hops: u64 = unsafe { ::std::mem::transmute(mem_hops) };
mem_hops as u64
});
__bindgen_bitfield_unit.set(46usize, 18u8, {
let mem_rsvd: u64 = unsafe { ::std::mem::transmute(mem_rsvd) };
mem_rsvd as u64
});
__bindgen_bitfield_unit
}
}
#[test]
fn bindgen_test_layout_perf_mem_data_src() {
const UNINIT: ::std::mem::MaybeUninit<perf_mem_data_src> = ::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<perf_mem_data_src>(),
8usize,
concat!("Size of: ", stringify!(perf_mem_data_src))
);
assert_eq!(
::std::mem::align_of::<perf_mem_data_src>(),
8usize,
concat!("Alignment of ", stringify!(perf_mem_data_src))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).val) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(perf_mem_data_src),
"::",
stringify!(val)
)
);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pfm_perf_encode_arg_t {
pub attr: *mut perf_event_attr,
pub fstr: *mut *mut ::std::os::raw::c_char,
pub size: usize,
pub idx: ::std::os::raw::c_int,
pub cpu: ::std::os::raw::c_int,
pub flags: ::std::os::raw::c_int,
pub pad0: ::std::os::raw::c_int,
}
#[test]
fn bindgen_test_layout_pfm_perf_encode_arg_t() {
const UNINIT: ::std::mem::MaybeUninit<pfm_perf_encode_arg_t> =
::std::mem::MaybeUninit::uninit();
let ptr = UNINIT.as_ptr();
assert_eq!(
::std::mem::size_of::<pfm_perf_encode_arg_t>(),
40usize,
concat!("Size of: ", stringify!(pfm_perf_encode_arg_t))
);
assert_eq!(
::std::mem::align_of::<pfm_perf_encode_arg_t>(),
8usize,
concat!("Alignment of ", stringify!(pfm_perf_encode_arg_t))
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).attr) as usize - ptr as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(pfm_perf_encode_arg_t),
"::",
stringify!(attr)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).fstr) as usize - ptr as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(pfm_perf_encode_arg_t),
"::",
stringify!(fstr)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(pfm_perf_encode_arg_t),
"::",
stringify!(size)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).idx) as usize - ptr as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(pfm_perf_encode_arg_t),
"::",
stringify!(idx)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).cpu) as usize - ptr as usize },
28usize,
concat!(
"Offset of field: ",
stringify!(pfm_perf_encode_arg_t),
"::",
stringify!(cpu)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(pfm_perf_encode_arg_t),
"::",
stringify!(flags)
)
);
assert_eq!(
unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize },
36usize,
concat!(
"Offset of field: ",
stringify!(pfm_perf_encode_arg_t),
"::",
stringify!(pad0)
)
);
}
extern "C" {
pub fn pfm_get_perf_event_encoding(
str_: *const ::std::os::raw::c_char,
dfl_plm: ::std::os::raw::c_int,
output: *mut perf_event_attr,
fstr: *mut *mut ::std::os::raw::c_char,
idx: *mut ::std::os::raw::c_int,
) -> pfm_err_t;
}