1use libc::{c_char, c_uchar, c_uint, c_ulonglong, c_void, size_t};
2
3#[allow(non_camel_case_types)]
4pub type kpc_config_t = u64;
5
6#[repr(C)]
8#[allow(non_camel_case_types)]
9pub struct kpep_event {
10 pub name: *const c_char,
12 pub description: *const c_char,
14 pub errata: *const c_char,
16 pub alias: *const c_char,
18 pub fallback: *const c_char,
20 pub mask: c_uint,
21 pub number: c_uchar,
22 pub umask: c_uchar,
23 pub reserved: c_uchar,
24 pub is_fixed: c_uchar,
25}
26
27#[allow(non_camel_case_types)]
29#[repr(C)]
30pub struct kpep_db {
31 pub name: *const c_char,
33 pub cpu_id: *const c_char,
35 pub marketing_name: *const c_char,
37 pub plist_data: *mut c_void,
39 pub event_map: *mut c_void,
41 pub event_arr: *mut kpep_event,
43 pub fixed_event_arr: *mut *mut kpep_event,
45 pub alias_map: *mut c_void,
47 pub reserved_1: size_t,
48 pub reserved_2: size_t,
49 pub reserved_3: size_t,
50 pub event_count: size_t,
52 pub alias_count: size_t,
53 pub fixed_counter_count: size_t,
54 pub config_counter_count: size_t,
55 pub power_counter_count: size_t,
56 pub archtecture: c_uint,
58 pub fixed_counter_bits: c_uint,
59 pub config_counter_bits: c_uint,
60 pub power_counter_bits: c_uint,
61}
62
63#[repr(C)]
65#[allow(non_camel_case_types)]
66pub struct kpep_config {
67 pub db: *mut kpep_db,
68 pub ev_arr: *mut *mut kpep_event,
70 pub ev_map: *mut size_t,
72 pub ev_idx: *mut size_t,
74 pub flags: *mut c_uint,
76 pub kpc_periods: *mut c_ulonglong,
78 pub event_count: size_t,
80 pub counter_count: size_t,
81 pub classes: c_uint,
83 pub config_counter: c_uint,
84 pub power_counter: c_uint,
85 pub reserved: c_uint,
86}