xref: /DragonOS/kernel/src/include/bindings/linux_bpf.rs (revision 55e6f0b65f91b32638fd56581f711a816eccdcd1)
1 /* automatically generated by rust-bindgen 0.69.4 */
2 
3 #[repr(C)]
4 #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
5 pub struct __BindgenBitfieldUnit<Storage> {
6     storage: Storage,
7 }
8 impl<Storage> __BindgenBitfieldUnit<Storage> {
9     #[inline]
10     pub const fn new(storage: Storage) -> Self {
11         Self { storage }
12     }
13 }
14 impl<Storage> __BindgenBitfieldUnit<Storage>
15 where
16     Storage: AsRef<[u8]> + AsMut<[u8]>,
17 {
18     #[inline]
19     pub fn get_bit(&self, index: usize) -> bool {
20         debug_assert!(index / 8 < self.storage.as_ref().len());
21         let byte_index = index / 8;
22         let byte = self.storage.as_ref()[byte_index];
23         let bit_index = if cfg!(target_endian = "big") {
24             7 - (index % 8)
25         } else {
26             index % 8
27         };
28         let mask = 1 << bit_index;
29         byte & mask == mask
30     }
31     #[inline]
32     pub fn set_bit(&mut self, index: usize, val: bool) {
33         debug_assert!(index / 8 < self.storage.as_ref().len());
34         let byte_index = index / 8;
35         let byte = &mut self.storage.as_mut()[byte_index];
36         let bit_index = if cfg!(target_endian = "big") {
37             7 - (index % 8)
38         } else {
39             index % 8
40         };
41         let mask = 1 << bit_index;
42         if val {
43             *byte |= mask;
44         } else {
45             *byte &= !mask;
46         }
47     }
48     #[inline]
49     pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
50         debug_assert!(bit_width <= 64);
51         debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
52         debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
53         let mut val = 0;
54         for i in 0..(bit_width as usize) {
55             if self.get_bit(i + bit_offset) {
56                 let index = if cfg!(target_endian = "big") {
57                     bit_width as usize - 1 - i
58                 } else {
59                     i
60                 };
61                 val |= 1 << index;
62             }
63         }
64         val
65     }
66     #[inline]
67     pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
68         debug_assert!(bit_width <= 64);
69         debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
70         debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
71         for i in 0..(bit_width as usize) {
72             let mask = 1 << i;
73             let val_bit_is_set = val & mask == mask;
74             let index = if cfg!(target_endian = "big") {
75                 bit_width as usize - 1 - i
76             } else {
77                 i
78             };
79             self.set_bit(index + bit_offset, val_bit_is_set);
80         }
81     }
82 }
83 #[repr(C)]
84 #[derive(Default)]
85 pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
86 impl<T> __IncompleteArrayField<T> {
87     #[inline]
88     pub const fn new() -> Self {
89         __IncompleteArrayField(::core::marker::PhantomData, [])
90     }
91     #[inline]
92     pub fn as_ptr(&self) -> *const T {
93         self as *const _ as *const T
94     }
95     #[inline]
96     pub fn as_mut_ptr(&mut self) -> *mut T {
97         self as *mut _ as *mut T
98     }
99     #[inline]
100     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
101         ::core::slice::from_raw_parts(self.as_ptr(), len)
102     }
103     #[inline]
104     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
105         ::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
106     }
107 }
108 impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
109     fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
110         fmt.write_str("__IncompleteArrayField")
111     }
112 }
113 pub const SO_ATTACH_BPF: u32 = 50;
114 pub const SO_DETACH_BPF: u32 = 27;
115 pub const BPF_LD: u32 = 0;
116 pub const BPF_LDX: u32 = 1;
117 pub const BPF_ST: u32 = 2;
118 pub const BPF_STX: u32 = 3;
119 pub const BPF_ALU: u32 = 4;
120 pub const BPF_JMP: u32 = 5;
121 pub const BPF_W: u32 = 0;
122 pub const BPF_H: u32 = 8;
123 pub const BPF_B: u32 = 16;
124 pub const BPF_K: u32 = 0;
125 pub const BPF_ALU64: u32 = 7;
126 pub const BPF_DW: u32 = 24;
127 pub const BPF_CALL: u32 = 128;
128 pub const BPF_F_ALLOW_OVERRIDE: u32 = 1;
129 pub const BPF_F_ALLOW_MULTI: u32 = 2;
130 pub const BPF_F_REPLACE: u32 = 4;
131 pub const BPF_F_BEFORE: u32 = 8;
132 pub const BPF_F_AFTER: u32 = 16;
133 pub const BPF_F_ID: u32 = 32;
134 pub const BPF_F_STRICT_ALIGNMENT: u32 = 1;
135 pub const BPF_F_ANY_ALIGNMENT: u32 = 2;
136 pub const BPF_F_TEST_RND_HI32: u32 = 4;
137 pub const BPF_F_TEST_STATE_FREQ: u32 = 8;
138 pub const BPF_F_SLEEPABLE: u32 = 16;
139 pub const BPF_F_XDP_HAS_FRAGS: u32 = 32;
140 pub const BPF_F_XDP_DEV_BOUND_ONLY: u32 = 64;
141 pub const BPF_F_TEST_REG_INVARIANTS: u32 = 128;
142 pub const BPF_F_NETFILTER_IP_DEFRAG: u32 = 1;
143 pub const BPF_PSEUDO_MAP_FD: u32 = 1;
144 pub const BPF_PSEUDO_MAP_IDX: u32 = 5;
145 pub const BPF_PSEUDO_MAP_VALUE: u32 = 2;
146 pub const BPF_PSEUDO_MAP_IDX_VALUE: u32 = 6;
147 pub const BPF_PSEUDO_BTF_ID: u32 = 3;
148 pub const BPF_PSEUDO_FUNC: u32 = 4;
149 pub const BPF_PSEUDO_CALL: u32 = 1;
150 pub const BPF_PSEUDO_KFUNC_CALL: u32 = 2;
151 pub const BPF_F_QUERY_EFFECTIVE: u32 = 1;
152 pub const BPF_F_TEST_RUN_ON_CPU: u32 = 1;
153 pub const BPF_F_TEST_XDP_LIVE_FRAMES: u32 = 2;
154 pub const BTF_INT_SIGNED: u32 = 1;
155 pub const BTF_INT_CHAR: u32 = 2;
156 pub const BTF_INT_BOOL: u32 = 4;
157 pub const NLMSG_ALIGNTO: u32 = 4;
158 pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
159 pub const XDP_FLAGS_SKB_MODE: u32 = 2;
160 pub const XDP_FLAGS_DRV_MODE: u32 = 4;
161 pub const XDP_FLAGS_HW_MODE: u32 = 8;
162 pub const XDP_FLAGS_REPLACE: u32 = 16;
163 pub const XDP_FLAGS_MODES: u32 = 14;
164 pub const XDP_FLAGS_MASK: u32 = 31;
165 pub const PERF_MAX_STACK_DEPTH: u32 = 127;
166 pub const PERF_MAX_CONTEXTS_PER_STACK: u32 = 8;
167 pub const PERF_FLAG_FD_NO_GROUP: u32 = 1;
168 pub const PERF_FLAG_FD_OUTPUT: u32 = 2;
169 pub const PERF_FLAG_PID_CGROUP: u32 = 4;
170 pub const PERF_FLAG_FD_CLOEXEC: u32 = 8;
171 pub const TC_H_MAJ_MASK: u32 = 4294901760;
172 pub const TC_H_MIN_MASK: u32 = 65535;
173 pub const TC_H_UNSPEC: u32 = 0;
174 pub const TC_H_ROOT: u32 = 4294967295;
175 pub const TC_H_INGRESS: u32 = 4294967281;
176 pub const TC_H_CLSACT: u32 = 4294967281;
177 pub const TC_H_MIN_PRIORITY: u32 = 65504;
178 pub const TC_H_MIN_INGRESS: u32 = 65522;
179 pub const TC_H_MIN_EGRESS: u32 = 65523;
180 pub const TCA_BPF_FLAG_ACT_DIRECT: u32 = 1;
181 pub type __u8 = ::core::ffi::c_uchar;
182 pub type __s16 = ::core::ffi::c_short;
183 pub type __u16 = ::core::ffi::c_ushort;
184 pub type __s32 = ::core::ffi::c_int;
185 pub type __u32 = ::core::ffi::c_uint;
186 pub type __s64 = ::core::ffi::c_longlong;
187 pub type __u64 = ::core::ffi::c_ulonglong;
188 #[repr(C)]
189 #[derive(Debug, Copy, Clone)]
190 pub struct bpf_insn {
191     pub code: __u8,
192     pub _bitfield_align_1: [u8; 0],
193     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
194     pub off: __s16,
195     pub imm: __s32,
196 }
197 impl bpf_insn {
198     #[inline]
199     pub fn dst_reg(&self) -> __u8 {
200         unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
201     }
202     #[inline]
203     pub fn set_dst_reg(&mut self, val: __u8) {
204         unsafe {
205             let val: u8 = ::core::mem::transmute(val);
206             self._bitfield_1.set(0usize, 4u8, val as u64)
207         }
208     }
209     #[inline]
210     pub fn src_reg(&self) -> __u8 {
211         unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
212     }
213     #[inline]
214     pub fn set_src_reg(&mut self, val: __u8) {
215         unsafe {
216             let val: u8 = ::core::mem::transmute(val);
217             self._bitfield_1.set(4usize, 4u8, val as u64)
218         }
219     }
220     #[inline]
221     pub fn new_bitfield_1(dst_reg: __u8, src_reg: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
222         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
223         __bindgen_bitfield_unit.set(0usize, 4u8, {
224             let dst_reg: u8 = unsafe { ::core::mem::transmute(dst_reg) };
225             dst_reg as u64
226         });
227         __bindgen_bitfield_unit.set(4usize, 4u8, {
228             let src_reg: u8 = unsafe { ::core::mem::transmute(src_reg) };
229             src_reg as u64
230         });
231         __bindgen_bitfield_unit
232     }
233 }
234 #[repr(C)]
235 #[derive(Debug)]
236 pub struct bpf_lpm_trie_key {
237     pub prefixlen: __u32,
238     pub data: __IncompleteArrayField<__u8>,
239 }
240 impl bpf_cmd {
241     pub const BPF_PROG_RUN: bpf_cmd = bpf_cmd::BPF_PROG_TEST_RUN;
242 }
243 #[repr(u32)]
244 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, FromPrimitive)]
245 pub enum bpf_cmd {
246     BPF_MAP_CREATE = 0,
247     BPF_MAP_LOOKUP_ELEM = 1,
248     BPF_MAP_UPDATE_ELEM = 2,
249     BPF_MAP_DELETE_ELEM = 3,
250     BPF_MAP_GET_NEXT_KEY = 4,
251     BPF_PROG_LOAD = 5,
252     BPF_OBJ_PIN = 6,
253     BPF_OBJ_GET = 7,
254     BPF_PROG_ATTACH = 8,
255     BPF_PROG_DETACH = 9,
256     BPF_PROG_TEST_RUN = 10,
257     BPF_PROG_GET_NEXT_ID = 11,
258     BPF_MAP_GET_NEXT_ID = 12,
259     BPF_PROG_GET_FD_BY_ID = 13,
260     BPF_MAP_GET_FD_BY_ID = 14,
261     BPF_OBJ_GET_INFO_BY_FD = 15,
262     BPF_PROG_QUERY = 16,
263     BPF_RAW_TRACEPOINT_OPEN = 17,
264     BPF_BTF_LOAD = 18,
265     BPF_BTF_GET_FD_BY_ID = 19,
266     BPF_TASK_FD_QUERY = 20,
267     BPF_MAP_LOOKUP_AND_DELETE_ELEM = 21,
268     BPF_MAP_FREEZE = 22,
269     BPF_BTF_GET_NEXT_ID = 23,
270     BPF_MAP_LOOKUP_BATCH = 24,
271     BPF_MAP_LOOKUP_AND_DELETE_BATCH = 25,
272     BPF_MAP_UPDATE_BATCH = 26,
273     BPF_MAP_DELETE_BATCH = 27,
274     BPF_LINK_CREATE = 28,
275     BPF_LINK_UPDATE = 29,
276     BPF_LINK_GET_FD_BY_ID = 30,
277     BPF_LINK_GET_NEXT_ID = 31,
278     BPF_ENABLE_STATS = 32,
279     BPF_ITER_CREATE = 33,
280     BPF_LINK_DETACH = 34,
281     BPF_PROG_BIND_MAP = 35,
282     BPF_TOKEN_CREATE = 36,
283     __MAX_BPF_CMD = 37,
284 }
285 impl bpf_map_type {
286     pub const BPF_MAP_TYPE_CGROUP_STORAGE: bpf_map_type =
287         bpf_map_type::BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED;
288 }
289 impl bpf_map_type {
290     pub const BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE: bpf_map_type =
291         bpf_map_type::BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED;
292 }
293 #[repr(u32)]
294 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, FromPrimitive)]
295 pub enum bpf_map_type {
296     BPF_MAP_TYPE_UNSPEC = 0,
297     BPF_MAP_TYPE_HASH = 1,
298     BPF_MAP_TYPE_ARRAY = 2,
299     BPF_MAP_TYPE_PROG_ARRAY = 3,
300     BPF_MAP_TYPE_PERF_EVENT_ARRAY = 4,
301     BPF_MAP_TYPE_PERCPU_HASH = 5,
302     BPF_MAP_TYPE_PERCPU_ARRAY = 6,
303     BPF_MAP_TYPE_STACK_TRACE = 7,
304     BPF_MAP_TYPE_CGROUP_ARRAY = 8,
305     BPF_MAP_TYPE_LRU_HASH = 9,
306     BPF_MAP_TYPE_LRU_PERCPU_HASH = 10,
307     BPF_MAP_TYPE_LPM_TRIE = 11,
308     BPF_MAP_TYPE_ARRAY_OF_MAPS = 12,
309     BPF_MAP_TYPE_HASH_OF_MAPS = 13,
310     BPF_MAP_TYPE_DEVMAP = 14,
311     BPF_MAP_TYPE_SOCKMAP = 15,
312     BPF_MAP_TYPE_CPUMAP = 16,
313     BPF_MAP_TYPE_XSKMAP = 17,
314     BPF_MAP_TYPE_SOCKHASH = 18,
315     BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED = 19,
316     BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 20,
317     BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED = 21,
318     BPF_MAP_TYPE_QUEUE = 22,
319     BPF_MAP_TYPE_STACK = 23,
320     BPF_MAP_TYPE_SK_STORAGE = 24,
321     BPF_MAP_TYPE_DEVMAP_HASH = 25,
322     BPF_MAP_TYPE_STRUCT_OPS = 26,
323     BPF_MAP_TYPE_RINGBUF = 27,
324     BPF_MAP_TYPE_INODE_STORAGE = 28,
325     BPF_MAP_TYPE_TASK_STORAGE = 29,
326     BPF_MAP_TYPE_BLOOM_FILTER = 30,
327     BPF_MAP_TYPE_USER_RINGBUF = 31,
328     BPF_MAP_TYPE_CGRP_STORAGE = 32,
329     BPF_MAP_TYPE_ARENA = 33,
330     __MAX_BPF_MAP_TYPE = 34,
331 }
332 #[repr(u32)]
333 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, FromPrimitive)]
334 pub enum bpf_prog_type {
335     BPF_PROG_TYPE_UNSPEC = 0,
336     BPF_PROG_TYPE_SOCKET_FILTER = 1,
337     BPF_PROG_TYPE_KPROBE = 2,
338     BPF_PROG_TYPE_SCHED_CLS = 3,
339     BPF_PROG_TYPE_SCHED_ACT = 4,
340     BPF_PROG_TYPE_TRACEPOINT = 5,
341     BPF_PROG_TYPE_XDP = 6,
342     BPF_PROG_TYPE_PERF_EVENT = 7,
343     BPF_PROG_TYPE_CGROUP_SKB = 8,
344     BPF_PROG_TYPE_CGROUP_SOCK = 9,
345     BPF_PROG_TYPE_LWT_IN = 10,
346     BPF_PROG_TYPE_LWT_OUT = 11,
347     BPF_PROG_TYPE_LWT_XMIT = 12,
348     BPF_PROG_TYPE_SOCK_OPS = 13,
349     BPF_PROG_TYPE_SK_SKB = 14,
350     BPF_PROG_TYPE_CGROUP_DEVICE = 15,
351     BPF_PROG_TYPE_SK_MSG = 16,
352     BPF_PROG_TYPE_RAW_TRACEPOINT = 17,
353     BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 18,
354     BPF_PROG_TYPE_LWT_SEG6LOCAL = 19,
355     BPF_PROG_TYPE_LIRC_MODE2 = 20,
356     BPF_PROG_TYPE_SK_REUSEPORT = 21,
357     BPF_PROG_TYPE_FLOW_DISSECTOR = 22,
358     BPF_PROG_TYPE_CGROUP_SYSCTL = 23,
359     BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 24,
360     BPF_PROG_TYPE_CGROUP_SOCKOPT = 25,
361     BPF_PROG_TYPE_TRACING = 26,
362     BPF_PROG_TYPE_STRUCT_OPS = 27,
363     BPF_PROG_TYPE_EXT = 28,
364     BPF_PROG_TYPE_LSM = 29,
365     BPF_PROG_TYPE_SK_LOOKUP = 30,
366     BPF_PROG_TYPE_SYSCALL = 31,
367     BPF_PROG_TYPE_NETFILTER = 32,
368     __MAX_BPF_PROG_TYPE = 33,
369 }
370 #[repr(u32)]
371 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, FromPrimitive)]
372 pub enum bpf_attach_type {
373     BPF_CGROUP_INET_INGRESS = 0,
374     BPF_CGROUP_INET_EGRESS = 1,
375     BPF_CGROUP_INET_SOCK_CREATE = 2,
376     BPF_CGROUP_SOCK_OPS = 3,
377     BPF_SK_SKB_STREAM_PARSER = 4,
378     BPF_SK_SKB_STREAM_VERDICT = 5,
379     BPF_CGROUP_DEVICE = 6,
380     BPF_SK_MSG_VERDICT = 7,
381     BPF_CGROUP_INET4_BIND = 8,
382     BPF_CGROUP_INET6_BIND = 9,
383     BPF_CGROUP_INET4_CONNECT = 10,
384     BPF_CGROUP_INET6_CONNECT = 11,
385     BPF_CGROUP_INET4_POST_BIND = 12,
386     BPF_CGROUP_INET6_POST_BIND = 13,
387     BPF_CGROUP_UDP4_SENDMSG = 14,
388     BPF_CGROUP_UDP6_SENDMSG = 15,
389     BPF_LIRC_MODE2 = 16,
390     BPF_FLOW_DISSECTOR = 17,
391     BPF_CGROUP_SYSCTL = 18,
392     BPF_CGROUP_UDP4_RECVMSG = 19,
393     BPF_CGROUP_UDP6_RECVMSG = 20,
394     BPF_CGROUP_GETSOCKOPT = 21,
395     BPF_CGROUP_SETSOCKOPT = 22,
396     BPF_TRACE_RAW_TP = 23,
397     BPF_TRACE_FENTRY = 24,
398     BPF_TRACE_FEXIT = 25,
399     BPF_MODIFY_RETURN = 26,
400     BPF_LSM_MAC = 27,
401     BPF_TRACE_ITER = 28,
402     BPF_CGROUP_INET4_GETPEERNAME = 29,
403     BPF_CGROUP_INET6_GETPEERNAME = 30,
404     BPF_CGROUP_INET4_GETSOCKNAME = 31,
405     BPF_CGROUP_INET6_GETSOCKNAME = 32,
406     BPF_XDP_DEVMAP = 33,
407     BPF_CGROUP_INET_SOCK_RELEASE = 34,
408     BPF_XDP_CPUMAP = 35,
409     BPF_SK_LOOKUP = 36,
410     BPF_XDP = 37,
411     BPF_SK_SKB_VERDICT = 38,
412     BPF_SK_REUSEPORT_SELECT = 39,
413     BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 40,
414     BPF_PERF_EVENT = 41,
415     BPF_TRACE_KPROBE_MULTI = 42,
416     BPF_LSM_CGROUP = 43,
417     BPF_STRUCT_OPS = 44,
418     BPF_NETFILTER = 45,
419     BPF_TCX_INGRESS = 46,
420     BPF_TCX_EGRESS = 47,
421     BPF_TRACE_UPROBE_MULTI = 48,
422     BPF_CGROUP_UNIX_CONNECT = 49,
423     BPF_CGROUP_UNIX_SENDMSG = 50,
424     BPF_CGROUP_UNIX_RECVMSG = 51,
425     BPF_CGROUP_UNIX_GETPEERNAME = 52,
426     BPF_CGROUP_UNIX_GETSOCKNAME = 53,
427     BPF_NETKIT_PRIMARY = 54,
428     BPF_NETKIT_PEER = 55,
429     __MAX_BPF_ATTACH_TYPE = 56,
430 }
431 #[repr(u32)]
432 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
433 pub enum bpf_link_type {
434     BPF_LINK_TYPE_UNSPEC = 0,
435     BPF_LINK_TYPE_RAW_TRACEPOINT = 1,
436     BPF_LINK_TYPE_TRACING = 2,
437     BPF_LINK_TYPE_CGROUP = 3,
438     BPF_LINK_TYPE_ITER = 4,
439     BPF_LINK_TYPE_NETNS = 5,
440     BPF_LINK_TYPE_XDP = 6,
441     BPF_LINK_TYPE_PERF_EVENT = 7,
442     BPF_LINK_TYPE_KPROBE_MULTI = 8,
443     BPF_LINK_TYPE_STRUCT_OPS = 9,
444     BPF_LINK_TYPE_NETFILTER = 10,
445     BPF_LINK_TYPE_TCX = 11,
446     BPF_LINK_TYPE_UPROBE_MULTI = 12,
447     BPF_LINK_TYPE_NETKIT = 13,
448     __MAX_BPF_LINK_TYPE = 14,
449 }
450 pub const BPF_F_KPROBE_MULTI_RETURN: _bindgen_ty_2 = 1;
451 pub type _bindgen_ty_2 = ::core::ffi::c_uint;
452 pub const BPF_F_UPROBE_MULTI_RETURN: _bindgen_ty_3 = 1;
453 pub type _bindgen_ty_3 = ::core::ffi::c_uint;
454 pub const BPF_ANY: _bindgen_ty_4 = 0;
455 pub const BPF_NOEXIST: _bindgen_ty_4 = 1;
456 pub const BPF_EXIST: _bindgen_ty_4 = 2;
457 pub const BPF_F_LOCK: _bindgen_ty_4 = 4;
458 pub type _bindgen_ty_4 = ::core::ffi::c_uint;
459 pub const BPF_F_NO_PREALLOC: _bindgen_ty_5 = 1;
460 pub const BPF_F_NO_COMMON_LRU: _bindgen_ty_5 = 2;
461 pub const BPF_F_NUMA_NODE: _bindgen_ty_5 = 4;
462 pub const BPF_F_RDONLY: _bindgen_ty_5 = 8;
463 pub const BPF_F_WRONLY: _bindgen_ty_5 = 16;
464 pub const BPF_F_STACK_BUILD_ID: _bindgen_ty_5 = 32;
465 pub const BPF_F_ZERO_SEED: _bindgen_ty_5 = 64;
466 pub const BPF_F_RDONLY_PROG: _bindgen_ty_5 = 128;
467 pub const BPF_F_WRONLY_PROG: _bindgen_ty_5 = 256;
468 pub const BPF_F_CLONE: _bindgen_ty_5 = 512;
469 pub const BPF_F_MMAPABLE: _bindgen_ty_5 = 1024;
470 pub const BPF_F_PRESERVE_ELEMS: _bindgen_ty_5 = 2048;
471 pub const BPF_F_INNER_MAP: _bindgen_ty_5 = 4096;
472 pub const BPF_F_LINK: _bindgen_ty_5 = 8192;
473 pub const BPF_F_PATH_FD: _bindgen_ty_5 = 16384;
474 pub const BPF_F_VTYPE_BTF_OBJ_FD: _bindgen_ty_5 = 32768;
475 pub const BPF_F_TOKEN_FD: _bindgen_ty_5 = 65536;
476 pub const BPF_F_SEGV_ON_FAULT: _bindgen_ty_5 = 131072;
477 pub const BPF_F_NO_USER_CONV: _bindgen_ty_5 = 262144;
478 pub type _bindgen_ty_5 = ::core::ffi::c_uint;
479 #[repr(u32)]
480 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
481 pub enum bpf_stats_type {
482     BPF_STATS_RUN_TIME = 0,
483 }
484 #[repr(C)]
485 #[derive(Copy, Clone)]
486 pub union bpf_attr {
487     pub __bindgen_anon_1: bpf_attr__bindgen_ty_1,
488     pub __bindgen_anon_2: bpf_attr__bindgen_ty_2,
489     pub batch: bpf_attr__bindgen_ty_3,
490     pub __bindgen_anon_3: bpf_attr__bindgen_ty_4,
491     pub __bindgen_anon_4: bpf_attr__bindgen_ty_5,
492     pub __bindgen_anon_5: bpf_attr__bindgen_ty_6,
493     pub test: bpf_attr__bindgen_ty_7,
494     pub __bindgen_anon_6: bpf_attr__bindgen_ty_8,
495     pub info: bpf_attr__bindgen_ty_9,
496     pub query: bpf_attr__bindgen_ty_10,
497     pub raw_tracepoint: bpf_attr__bindgen_ty_11,
498     pub __bindgen_anon_7: bpf_attr__bindgen_ty_12,
499     pub task_fd_query: bpf_attr__bindgen_ty_13,
500     pub link_create: bpf_attr__bindgen_ty_14,
501     pub link_update: bpf_attr__bindgen_ty_15,
502     pub link_detach: bpf_attr__bindgen_ty_16,
503     pub enable_stats: bpf_attr__bindgen_ty_17,
504     pub iter_create: bpf_attr__bindgen_ty_18,
505     pub prog_bind_map: bpf_attr__bindgen_ty_19,
506     pub token_create: bpf_attr__bindgen_ty_20,
507 }
508 #[repr(C)]
509 #[derive(Debug, Copy, Clone)]
510 pub struct bpf_attr__bindgen_ty_1 {
511     pub map_type: __u32,
512     pub key_size: __u32,
513     pub value_size: __u32,
514     pub max_entries: __u32,
515     pub map_flags: __u32,
516     pub inner_map_fd: __u32,
517     pub numa_node: __u32,
518     pub map_name: [::core::ffi::c_char; 16usize],
519     pub map_ifindex: __u32,
520     pub btf_fd: __u32,
521     pub btf_key_type_id: __u32,
522     pub btf_value_type_id: __u32,
523     pub btf_vmlinux_value_type_id: __u32,
524     pub map_extra: __u64,
525     pub value_type_btf_obj_fd: __s32,
526     pub map_token_fd: __s32,
527 }
528 #[repr(C)]
529 #[derive(Copy, Clone)]
530 pub struct bpf_attr__bindgen_ty_2 {
531     pub map_fd: __u32,
532     pub key: __u64,
533     pub __bindgen_anon_1: bpf_attr__bindgen_ty_2__bindgen_ty_1,
534     pub flags: __u64,
535 }
536 #[repr(C)]
537 #[derive(Copy, Clone)]
538 pub union bpf_attr__bindgen_ty_2__bindgen_ty_1 {
539     pub value: __u64,
540     pub next_key: __u64,
541 }
542 #[repr(C)]
543 #[derive(Debug, Copy, Clone)]
544 pub struct bpf_attr__bindgen_ty_3 {
545     pub in_batch: __u64,
546     pub out_batch: __u64,
547     pub keys: __u64,
548     pub values: __u64,
549     pub count: __u32,
550     pub map_fd: __u32,
551     pub elem_flags: __u64,
552     pub flags: __u64,
553 }
554 #[repr(C)]
555 #[derive(Copy, Clone)]
556 pub struct bpf_attr__bindgen_ty_4 {
557     pub prog_type: __u32,
558     pub insn_cnt: __u32,
559     pub insns: __u64,
560     pub license: __u64,
561     pub log_level: __u32,
562     pub log_size: __u32,
563     pub log_buf: __u64,
564     pub kern_version: __u32,
565     pub prog_flags: __u32,
566     pub prog_name: [::core::ffi::c_char; 16usize],
567     pub prog_ifindex: __u32,
568     pub expected_attach_type: __u32,
569     pub prog_btf_fd: __u32,
570     pub func_info_rec_size: __u32,
571     pub func_info: __u64,
572     pub func_info_cnt: __u32,
573     pub line_info_rec_size: __u32,
574     pub line_info: __u64,
575     pub line_info_cnt: __u32,
576     pub attach_btf_id: __u32,
577     pub __bindgen_anon_1: bpf_attr__bindgen_ty_4__bindgen_ty_1,
578     pub core_relo_cnt: __u32,
579     pub fd_array: __u64,
580     pub core_relos: __u64,
581     pub core_relo_rec_size: __u32,
582     pub log_true_size: __u32,
583     pub prog_token_fd: __s32,
584 }
585 #[repr(C)]
586 #[derive(Copy, Clone)]
587 pub union bpf_attr__bindgen_ty_4__bindgen_ty_1 {
588     pub attach_prog_fd: __u32,
589     pub attach_btf_obj_fd: __u32,
590 }
591 #[repr(C)]
592 #[derive(Debug, Copy, Clone)]
593 pub struct bpf_attr__bindgen_ty_5 {
594     pub pathname: __u64,
595     pub bpf_fd: __u32,
596     pub file_flags: __u32,
597     pub path_fd: __s32,
598 }
599 #[repr(C)]
600 #[derive(Copy, Clone)]
601 pub struct bpf_attr__bindgen_ty_6 {
602     pub __bindgen_anon_1: bpf_attr__bindgen_ty_6__bindgen_ty_1,
603     pub attach_bpf_fd: __u32,
604     pub attach_type: __u32,
605     pub attach_flags: __u32,
606     pub replace_bpf_fd: __u32,
607     pub __bindgen_anon_2: bpf_attr__bindgen_ty_6__bindgen_ty_2,
608     pub expected_revision: __u64,
609 }
610 #[repr(C)]
611 #[derive(Copy, Clone)]
612 pub union bpf_attr__bindgen_ty_6__bindgen_ty_1 {
613     pub target_fd: __u32,
614     pub target_ifindex: __u32,
615 }
616 #[repr(C)]
617 #[derive(Copy, Clone)]
618 pub union bpf_attr__bindgen_ty_6__bindgen_ty_2 {
619     pub relative_fd: __u32,
620     pub relative_id: __u32,
621 }
622 #[repr(C)]
623 #[derive(Debug, Copy, Clone)]
624 pub struct bpf_attr__bindgen_ty_7 {
625     pub prog_fd: __u32,
626     pub retval: __u32,
627     pub data_size_in: __u32,
628     pub data_size_out: __u32,
629     pub data_in: __u64,
630     pub data_out: __u64,
631     pub repeat: __u32,
632     pub duration: __u32,
633     pub ctx_size_in: __u32,
634     pub ctx_size_out: __u32,
635     pub ctx_in: __u64,
636     pub ctx_out: __u64,
637     pub flags: __u32,
638     pub cpu: __u32,
639     pub batch_size: __u32,
640 }
641 #[repr(C)]
642 #[derive(Copy, Clone)]
643 pub struct bpf_attr__bindgen_ty_8 {
644     pub __bindgen_anon_1: bpf_attr__bindgen_ty_8__bindgen_ty_1,
645     pub next_id: __u32,
646     pub open_flags: __u32,
647 }
648 #[repr(C)]
649 #[derive(Copy, Clone)]
650 pub union bpf_attr__bindgen_ty_8__bindgen_ty_1 {
651     pub start_id: __u32,
652     pub prog_id: __u32,
653     pub map_id: __u32,
654     pub btf_id: __u32,
655     pub link_id: __u32,
656 }
657 #[repr(C)]
658 #[derive(Debug, Copy, Clone)]
659 pub struct bpf_attr__bindgen_ty_9 {
660     pub bpf_fd: __u32,
661     pub info_len: __u32,
662     pub info: __u64,
663 }
664 #[repr(C)]
665 #[derive(Copy, Clone)]
666 pub struct bpf_attr__bindgen_ty_10 {
667     pub __bindgen_anon_1: bpf_attr__bindgen_ty_10__bindgen_ty_1,
668     pub attach_type: __u32,
669     pub query_flags: __u32,
670     pub attach_flags: __u32,
671     pub prog_ids: __u64,
672     pub __bindgen_anon_2: bpf_attr__bindgen_ty_10__bindgen_ty_2,
673     pub _bitfield_align_1: [u8; 0],
674     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
675     pub prog_attach_flags: __u64,
676     pub link_ids: __u64,
677     pub link_attach_flags: __u64,
678     pub revision: __u64,
679 }
680 #[repr(C)]
681 #[derive(Copy, Clone)]
682 pub union bpf_attr__bindgen_ty_10__bindgen_ty_1 {
683     pub target_fd: __u32,
684     pub target_ifindex: __u32,
685 }
686 #[repr(C)]
687 #[derive(Copy, Clone)]
688 pub union bpf_attr__bindgen_ty_10__bindgen_ty_2 {
689     pub prog_cnt: __u32,
690     pub count: __u32,
691 }
692 impl bpf_attr__bindgen_ty_10 {
693     #[inline]
694     pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
695         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
696         __bindgen_bitfield_unit
697     }
698 }
699 #[repr(C)]
700 #[derive(Debug, Copy, Clone)]
701 pub struct bpf_attr__bindgen_ty_11 {
702     pub name: __u64,
703     pub prog_fd: __u32,
704     pub _bitfield_align_1: [u8; 0],
705     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
706     pub cookie: __u64,
707 }
708 impl bpf_attr__bindgen_ty_11 {
709     #[inline]
710     pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
711         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
712         __bindgen_bitfield_unit
713     }
714 }
715 #[repr(C)]
716 #[derive(Debug, Copy, Clone)]
717 pub struct bpf_attr__bindgen_ty_12 {
718     pub btf: __u64,
719     pub btf_log_buf: __u64,
720     pub btf_size: __u32,
721     pub btf_log_size: __u32,
722     pub btf_log_level: __u32,
723     pub btf_log_true_size: __u32,
724     pub btf_flags: __u32,
725     pub btf_token_fd: __s32,
726 }
727 #[repr(C)]
728 #[derive(Debug, Copy, Clone)]
729 pub struct bpf_attr__bindgen_ty_13 {
730     pub pid: __u32,
731     pub fd: __u32,
732     pub flags: __u32,
733     pub buf_len: __u32,
734     pub buf: __u64,
735     pub prog_id: __u32,
736     pub fd_type: __u32,
737     pub probe_offset: __u64,
738     pub probe_addr: __u64,
739 }
740 #[repr(C)]
741 #[derive(Copy, Clone)]
742 pub struct bpf_attr__bindgen_ty_14 {
743     pub __bindgen_anon_1: bpf_attr__bindgen_ty_14__bindgen_ty_1,
744     pub __bindgen_anon_2: bpf_attr__bindgen_ty_14__bindgen_ty_2,
745     pub attach_type: __u32,
746     pub flags: __u32,
747     pub __bindgen_anon_3: bpf_attr__bindgen_ty_14__bindgen_ty_3,
748 }
749 #[repr(C)]
750 #[derive(Copy, Clone)]
751 pub union bpf_attr__bindgen_ty_14__bindgen_ty_1 {
752     pub prog_fd: __u32,
753     pub map_fd: __u32,
754 }
755 #[repr(C)]
756 #[derive(Copy, Clone)]
757 pub union bpf_attr__bindgen_ty_14__bindgen_ty_2 {
758     pub target_fd: __u32,
759     pub target_ifindex: __u32,
760 }
761 #[repr(C)]
762 #[derive(Copy, Clone)]
763 pub union bpf_attr__bindgen_ty_14__bindgen_ty_3 {
764     pub target_btf_id: __u32,
765     pub __bindgen_anon_1: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_1,
766     pub perf_event: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_2,
767     pub kprobe_multi: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_3,
768     pub tracing: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_4,
769     pub netfilter: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_5,
770     pub tcx: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_6,
771     pub uprobe_multi: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_7,
772     pub netkit: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_8,
773 }
774 #[repr(C)]
775 #[derive(Debug, Copy, Clone)]
776 pub struct bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_1 {
777     pub iter_info: __u64,
778     pub iter_info_len: __u32,
779 }
780 #[repr(C)]
781 #[derive(Debug, Copy, Clone)]
782 pub struct bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_2 {
783     pub bpf_cookie: __u64,
784 }
785 #[repr(C)]
786 #[derive(Debug, Copy, Clone)]
787 pub struct bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_3 {
788     pub flags: __u32,
789     pub cnt: __u32,
790     pub syms: __u64,
791     pub addrs: __u64,
792     pub cookies: __u64,
793 }
794 #[repr(C)]
795 #[derive(Debug, Copy, Clone)]
796 pub struct bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_4 {
797     pub target_btf_id: __u32,
798     pub cookie: __u64,
799 }
800 #[repr(C)]
801 #[derive(Debug, Copy, Clone)]
802 pub struct bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_5 {
803     pub pf: __u32,
804     pub hooknum: __u32,
805     pub priority: __s32,
806     pub flags: __u32,
807 }
808 #[repr(C)]
809 #[derive(Copy, Clone)]
810 pub struct bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_6 {
811     pub __bindgen_anon_1: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_6__bindgen_ty_1,
812     pub expected_revision: __u64,
813 }
814 #[repr(C)]
815 #[derive(Copy, Clone)]
816 pub union bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_6__bindgen_ty_1 {
817     pub relative_fd: __u32,
818     pub relative_id: __u32,
819 }
820 #[repr(C)]
821 #[derive(Debug, Copy, Clone)]
822 pub struct bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_7 {
823     pub path: __u64,
824     pub offsets: __u64,
825     pub ref_ctr_offsets: __u64,
826     pub cookies: __u64,
827     pub cnt: __u32,
828     pub flags: __u32,
829     pub pid: __u32,
830 }
831 #[repr(C)]
832 #[derive(Copy, Clone)]
833 pub struct bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_8 {
834     pub __bindgen_anon_1: bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_8__bindgen_ty_1,
835     pub expected_revision: __u64,
836 }
837 #[repr(C)]
838 #[derive(Copy, Clone)]
839 pub union bpf_attr__bindgen_ty_14__bindgen_ty_3__bindgen_ty_8__bindgen_ty_1 {
840     pub relative_fd: __u32,
841     pub relative_id: __u32,
842 }
843 #[repr(C)]
844 #[derive(Copy, Clone)]
845 pub struct bpf_attr__bindgen_ty_15 {
846     pub link_fd: __u32,
847     pub __bindgen_anon_1: bpf_attr__bindgen_ty_15__bindgen_ty_1,
848     pub flags: __u32,
849     pub __bindgen_anon_2: bpf_attr__bindgen_ty_15__bindgen_ty_2,
850 }
851 #[repr(C)]
852 #[derive(Copy, Clone)]
853 pub union bpf_attr__bindgen_ty_15__bindgen_ty_1 {
854     pub new_prog_fd: __u32,
855     pub new_map_fd: __u32,
856 }
857 #[repr(C)]
858 #[derive(Copy, Clone)]
859 pub union bpf_attr__bindgen_ty_15__bindgen_ty_2 {
860     pub old_prog_fd: __u32,
861     pub old_map_fd: __u32,
862 }
863 #[repr(C)]
864 #[derive(Debug, Copy, Clone)]
865 pub struct bpf_attr__bindgen_ty_16 {
866     pub link_fd: __u32,
867 }
868 #[repr(C)]
869 #[derive(Debug, Copy, Clone)]
870 pub struct bpf_attr__bindgen_ty_17 {
871     pub type_: __u32,
872 }
873 #[repr(C)]
874 #[derive(Debug, Copy, Clone)]
875 pub struct bpf_attr__bindgen_ty_18 {
876     pub link_fd: __u32,
877     pub flags: __u32,
878 }
879 #[repr(C)]
880 #[derive(Debug, Copy, Clone)]
881 pub struct bpf_attr__bindgen_ty_19 {
882     pub prog_fd: __u32,
883     pub map_fd: __u32,
884     pub flags: __u32,
885 }
886 #[repr(C)]
887 #[derive(Debug, Copy, Clone)]
888 pub struct bpf_attr__bindgen_ty_20 {
889     pub flags: __u32,
890     pub bpffs_fd: __u32,
891 }
892 pub const BPF_F_RECOMPUTE_CSUM: _bindgen_ty_6 = 1;
893 pub const BPF_F_INVALIDATE_HASH: _bindgen_ty_6 = 2;
894 pub type _bindgen_ty_6 = ::core::ffi::c_uint;
895 pub const BPF_F_HDR_FIELD_MASK: _bindgen_ty_7 = 15;
896 pub type _bindgen_ty_7 = ::core::ffi::c_uint;
897 pub const BPF_F_PSEUDO_HDR: _bindgen_ty_8 = 16;
898 pub const BPF_F_MARK_MANGLED_0: _bindgen_ty_8 = 32;
899 pub const BPF_F_MARK_ENFORCE: _bindgen_ty_8 = 64;
900 pub type _bindgen_ty_8 = ::core::ffi::c_uint;
901 pub const BPF_F_INGRESS: _bindgen_ty_9 = 1;
902 pub type _bindgen_ty_9 = ::core::ffi::c_uint;
903 pub const BPF_F_TUNINFO_IPV6: _bindgen_ty_10 = 1;
904 pub type _bindgen_ty_10 = ::core::ffi::c_uint;
905 pub const BPF_F_SKIP_FIELD_MASK: _bindgen_ty_11 = 255;
906 pub const BPF_F_USER_STACK: _bindgen_ty_11 = 256;
907 pub const BPF_F_FAST_STACK_CMP: _bindgen_ty_11 = 512;
908 pub const BPF_F_REUSE_STACKID: _bindgen_ty_11 = 1024;
909 pub const BPF_F_USER_BUILD_ID: _bindgen_ty_11 = 2048;
910 pub type _bindgen_ty_11 = ::core::ffi::c_uint;
911 pub const BPF_F_ZERO_CSUM_TX: _bindgen_ty_12 = 2;
912 pub const BPF_F_DONT_FRAGMENT: _bindgen_ty_12 = 4;
913 pub const BPF_F_SEQ_NUMBER: _bindgen_ty_12 = 8;
914 pub const BPF_F_NO_TUNNEL_KEY: _bindgen_ty_12 = 16;
915 pub type _bindgen_ty_12 = ::core::ffi::c_uint;
916 pub const BPF_F_TUNINFO_FLAGS: _bindgen_ty_13 = 16;
917 pub type _bindgen_ty_13 = ::core::ffi::c_uint;
918 pub const BPF_F_INDEX_MASK: _bindgen_ty_14 = 4294967295;
919 pub const BPF_F_CURRENT_CPU: _bindgen_ty_14 = 4294967295;
920 pub const BPF_F_CTXLEN_MASK: _bindgen_ty_14 = 4503595332403200;
921 pub type _bindgen_ty_14 = ::core::ffi::c_ulong;
922 pub const BPF_F_CURRENT_NETNS: _bindgen_ty_15 = -1;
923 pub type _bindgen_ty_15 = ::core::ffi::c_int;
924 pub const BPF_F_ADJ_ROOM_FIXED_GSO: _bindgen_ty_17 = 1;
925 pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV4: _bindgen_ty_17 = 2;
926 pub const BPF_F_ADJ_ROOM_ENCAP_L3_IPV6: _bindgen_ty_17 = 4;
927 pub const BPF_F_ADJ_ROOM_ENCAP_L4_GRE: _bindgen_ty_17 = 8;
928 pub const BPF_F_ADJ_ROOM_ENCAP_L4_UDP: _bindgen_ty_17 = 16;
929 pub const BPF_F_ADJ_ROOM_NO_CSUM_RESET: _bindgen_ty_17 = 32;
930 pub const BPF_F_ADJ_ROOM_ENCAP_L2_ETH: _bindgen_ty_17 = 64;
931 pub const BPF_F_ADJ_ROOM_DECAP_L3_IPV4: _bindgen_ty_17 = 128;
932 pub const BPF_F_ADJ_ROOM_DECAP_L3_IPV6: _bindgen_ty_17 = 256;
933 pub type _bindgen_ty_17 = ::core::ffi::c_uint;
934 pub const BPF_F_SYSCTL_BASE_NAME: _bindgen_ty_19 = 1;
935 pub type _bindgen_ty_19 = ::core::ffi::c_uint;
936 pub const BPF_F_GET_BRANCH_RECORDS_SIZE: _bindgen_ty_21 = 1;
937 pub type _bindgen_ty_21 = ::core::ffi::c_uint;
938 pub const BPF_RINGBUF_BUSY_BIT: _bindgen_ty_24 = 2147483648;
939 pub const BPF_RINGBUF_DISCARD_BIT: _bindgen_ty_24 = 1073741824;
940 pub const BPF_RINGBUF_HDR_SZ: _bindgen_ty_24 = 8;
941 pub type _bindgen_ty_24 = ::core::ffi::c_uint;
942 pub const BPF_F_BPRM_SECUREEXEC: _bindgen_ty_26 = 1;
943 pub type _bindgen_ty_26 = ::core::ffi::c_uint;
944 pub const BPF_F_BROADCAST: _bindgen_ty_27 = 8;
945 pub const BPF_F_EXCLUDE_INGRESS: _bindgen_ty_27 = 16;
946 pub type _bindgen_ty_27 = ::core::ffi::c_uint;
947 #[repr(C)]
948 #[derive(Copy, Clone)]
949 pub struct bpf_devmap_val {
950     pub ifindex: __u32,
951     pub bpf_prog: bpf_devmap_val__bindgen_ty_1,
952 }
953 #[repr(C)]
954 #[derive(Copy, Clone)]
955 pub union bpf_devmap_val__bindgen_ty_1 {
956     pub fd: ::core::ffi::c_int,
957     pub id: __u32,
958 }
959 #[repr(C)]
960 #[derive(Copy, Clone)]
961 pub struct bpf_cpumap_val {
962     pub qsize: __u32,
963     pub bpf_prog: bpf_cpumap_val__bindgen_ty_1,
964 }
965 #[repr(C)]
966 #[derive(Copy, Clone)]
967 pub union bpf_cpumap_val__bindgen_ty_1 {
968     pub fd: ::core::ffi::c_int,
969     pub id: __u32,
970 }
971 #[repr(C)]
972 #[derive(Debug, Copy, Clone)]
973 pub struct bpf_prog_info {
974     pub type_: __u32,
975     pub id: __u32,
976     pub tag: [__u8; 8usize],
977     pub jited_prog_len: __u32,
978     pub xlated_prog_len: __u32,
979     pub jited_prog_insns: __u64,
980     pub xlated_prog_insns: __u64,
981     pub load_time: __u64,
982     pub created_by_uid: __u32,
983     pub nr_map_ids: __u32,
984     pub map_ids: __u64,
985     pub name: [::core::ffi::c_char; 16usize],
986     pub ifindex: __u32,
987     pub _bitfield_align_1: [u8; 0],
988     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
989     pub netns_dev: __u64,
990     pub netns_ino: __u64,
991     pub nr_jited_ksyms: __u32,
992     pub nr_jited_func_lens: __u32,
993     pub jited_ksyms: __u64,
994     pub jited_func_lens: __u64,
995     pub btf_id: __u32,
996     pub func_info_rec_size: __u32,
997     pub func_info: __u64,
998     pub nr_func_info: __u32,
999     pub nr_line_info: __u32,
1000     pub line_info: __u64,
1001     pub jited_line_info: __u64,
1002     pub nr_jited_line_info: __u32,
1003     pub line_info_rec_size: __u32,
1004     pub jited_line_info_rec_size: __u32,
1005     pub nr_prog_tags: __u32,
1006     pub prog_tags: __u64,
1007     pub run_time_ns: __u64,
1008     pub run_cnt: __u64,
1009     pub recursion_misses: __u64,
1010     pub verified_insns: __u32,
1011     pub attach_btf_obj_id: __u32,
1012     pub attach_btf_id: __u32,
1013 }
1014 impl bpf_prog_info {
1015     #[inline]
1016     pub fn gpl_compatible(&self) -> __u32 {
1017         unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
1018     }
1019     #[inline]
1020     pub fn set_gpl_compatible(&mut self, val: __u32) {
1021         unsafe {
1022             let val: u32 = ::core::mem::transmute(val);
1023             self._bitfield_1.set(0usize, 1u8, val as u64)
1024         }
1025     }
1026     #[inline]
1027     pub fn new_bitfield_1(gpl_compatible: __u32) -> __BindgenBitfieldUnit<[u8; 4usize]> {
1028         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
1029         __bindgen_bitfield_unit.set(0usize, 1u8, {
1030             let gpl_compatible: u32 = unsafe { ::core::mem::transmute(gpl_compatible) };
1031             gpl_compatible as u64
1032         });
1033         __bindgen_bitfield_unit
1034     }
1035 }
1036 #[repr(C)]
1037 #[derive(Debug, Copy, Clone)]
1038 pub struct bpf_map_info {
1039     pub type_: __u32,
1040     pub id: __u32,
1041     pub key_size: __u32,
1042     pub value_size: __u32,
1043     pub max_entries: __u32,
1044     pub map_flags: __u32,
1045     pub name: [::core::ffi::c_char; 16usize],
1046     pub ifindex: __u32,
1047     pub btf_vmlinux_value_type_id: __u32,
1048     pub netns_dev: __u64,
1049     pub netns_ino: __u64,
1050     pub btf_id: __u32,
1051     pub btf_key_type_id: __u32,
1052     pub btf_value_type_id: __u32,
1053     pub btf_vmlinux_id: __u32,
1054     pub map_extra: __u64,
1055 }
1056 #[repr(C)]
1057 #[derive(Debug, Copy, Clone)]
1058 pub struct bpf_btf_info {
1059     pub btf: __u64,
1060     pub btf_size: __u32,
1061     pub id: __u32,
1062     pub name: __u64,
1063     pub name_len: __u32,
1064     pub kernel_btf: __u32,
1065 }
1066 #[repr(C)]
1067 #[derive(Copy, Clone)]
1068 pub struct bpf_link_info {
1069     pub type_: __u32,
1070     pub id: __u32,
1071     pub prog_id: __u32,
1072     pub __bindgen_anon_1: bpf_link_info__bindgen_ty_1,
1073 }
1074 #[repr(C)]
1075 #[derive(Copy, Clone)]
1076 pub union bpf_link_info__bindgen_ty_1 {
1077     pub raw_tracepoint: bpf_link_info__bindgen_ty_1__bindgen_ty_1,
1078     pub tracing: bpf_link_info__bindgen_ty_1__bindgen_ty_2,
1079     pub cgroup: bpf_link_info__bindgen_ty_1__bindgen_ty_3,
1080     pub iter: bpf_link_info__bindgen_ty_1__bindgen_ty_4,
1081     pub netns: bpf_link_info__bindgen_ty_1__bindgen_ty_5,
1082     pub xdp: bpf_link_info__bindgen_ty_1__bindgen_ty_6,
1083     pub struct_ops: bpf_link_info__bindgen_ty_1__bindgen_ty_7,
1084     pub netfilter: bpf_link_info__bindgen_ty_1__bindgen_ty_8,
1085     pub kprobe_multi: bpf_link_info__bindgen_ty_1__bindgen_ty_9,
1086     pub uprobe_multi: bpf_link_info__bindgen_ty_1__bindgen_ty_10,
1087     pub perf_event: bpf_link_info__bindgen_ty_1__bindgen_ty_11,
1088     pub tcx: bpf_link_info__bindgen_ty_1__bindgen_ty_12,
1089     pub netkit: bpf_link_info__bindgen_ty_1__bindgen_ty_13,
1090 }
1091 #[repr(C)]
1092 #[derive(Debug, Copy, Clone)]
1093 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_1 {
1094     pub tp_name: __u64,
1095     pub tp_name_len: __u32,
1096 }
1097 #[repr(C)]
1098 #[derive(Debug, Copy, Clone)]
1099 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_2 {
1100     pub attach_type: __u32,
1101     pub target_obj_id: __u32,
1102     pub target_btf_id: __u32,
1103 }
1104 #[repr(C)]
1105 #[derive(Debug, Copy, Clone)]
1106 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_3 {
1107     pub cgroup_id: __u64,
1108     pub attach_type: __u32,
1109 }
1110 #[repr(C)]
1111 #[derive(Copy, Clone)]
1112 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_4 {
1113     pub target_name: __u64,
1114     pub target_name_len: __u32,
1115     pub __bindgen_anon_1: bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_1,
1116     pub __bindgen_anon_2: bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_2,
1117 }
1118 #[repr(C)]
1119 #[derive(Copy, Clone)]
1120 pub union bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_1 {
1121     pub map: bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1,
1122 }
1123 #[repr(C)]
1124 #[derive(Debug, Copy, Clone)]
1125 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1 {
1126     pub map_id: __u32,
1127 }
1128 #[repr(C)]
1129 #[derive(Copy, Clone)]
1130 pub union bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_2 {
1131     pub cgroup: bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_2__bindgen_ty_1,
1132     pub task: bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_2__bindgen_ty_2,
1133 }
1134 #[repr(C)]
1135 #[derive(Debug, Copy, Clone)]
1136 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_2__bindgen_ty_1 {
1137     pub cgroup_id: __u64,
1138     pub order: __u32,
1139 }
1140 #[repr(C)]
1141 #[derive(Debug, Copy, Clone)]
1142 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_4__bindgen_ty_2__bindgen_ty_2 {
1143     pub tid: __u32,
1144     pub pid: __u32,
1145 }
1146 #[repr(C)]
1147 #[derive(Debug, Copy, Clone)]
1148 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_5 {
1149     pub netns_ino: __u32,
1150     pub attach_type: __u32,
1151 }
1152 #[repr(C)]
1153 #[derive(Debug, Copy, Clone)]
1154 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_6 {
1155     pub ifindex: __u32,
1156 }
1157 #[repr(C)]
1158 #[derive(Debug, Copy, Clone)]
1159 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_7 {
1160     pub map_id: __u32,
1161 }
1162 #[repr(C)]
1163 #[derive(Debug, Copy, Clone)]
1164 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_8 {
1165     pub pf: __u32,
1166     pub hooknum: __u32,
1167     pub priority: __s32,
1168     pub flags: __u32,
1169 }
1170 #[repr(C)]
1171 #[derive(Debug, Copy, Clone)]
1172 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_9 {
1173     pub addrs: __u64,
1174     pub count: __u32,
1175     pub flags: __u32,
1176     pub missed: __u64,
1177     pub cookies: __u64,
1178 }
1179 #[repr(C)]
1180 #[derive(Debug, Copy, Clone)]
1181 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_10 {
1182     pub path: __u64,
1183     pub offsets: __u64,
1184     pub ref_ctr_offsets: __u64,
1185     pub cookies: __u64,
1186     pub path_size: __u32,
1187     pub count: __u32,
1188     pub flags: __u32,
1189     pub pid: __u32,
1190 }
1191 #[repr(C)]
1192 #[derive(Copy, Clone)]
1193 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_11 {
1194     pub type_: __u32,
1195     pub _bitfield_align_1: [u8; 0],
1196     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
1197     pub __bindgen_anon_1: bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1,
1198 }
1199 #[repr(C)]
1200 #[derive(Copy, Clone)]
1201 pub union bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1 {
1202     pub uprobe: bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_1,
1203     pub kprobe: bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_2,
1204     pub tracepoint: bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_3,
1205     pub event: bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_4,
1206 }
1207 #[repr(C)]
1208 #[derive(Debug, Copy, Clone)]
1209 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_1 {
1210     pub file_name: __u64,
1211     pub name_len: __u32,
1212     pub offset: __u32,
1213     pub cookie: __u64,
1214 }
1215 #[repr(C)]
1216 #[derive(Debug, Copy, Clone)]
1217 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_2 {
1218     pub func_name: __u64,
1219     pub name_len: __u32,
1220     pub offset: __u32,
1221     pub addr: __u64,
1222     pub missed: __u64,
1223     pub cookie: __u64,
1224 }
1225 #[repr(C)]
1226 #[derive(Debug, Copy, Clone)]
1227 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_3 {
1228     pub tp_name: __u64,
1229     pub name_len: __u32,
1230     pub _bitfield_align_1: [u8; 0],
1231     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
1232     pub cookie: __u64,
1233 }
1234 impl bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_3 {
1235     #[inline]
1236     pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
1237         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
1238         __bindgen_bitfield_unit
1239     }
1240 }
1241 #[repr(C)]
1242 #[derive(Debug, Copy, Clone)]
1243 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_4 {
1244     pub config: __u64,
1245     pub type_: __u32,
1246     pub _bitfield_align_1: [u8; 0],
1247     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
1248     pub cookie: __u64,
1249 }
1250 impl bpf_link_info__bindgen_ty_1__bindgen_ty_11__bindgen_ty_1__bindgen_ty_4 {
1251     #[inline]
1252     pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
1253         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
1254         __bindgen_bitfield_unit
1255     }
1256 }
1257 impl bpf_link_info__bindgen_ty_1__bindgen_ty_11 {
1258     #[inline]
1259     pub fn new_bitfield_1() -> __BindgenBitfieldUnit<[u8; 4usize]> {
1260         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
1261         __bindgen_bitfield_unit
1262     }
1263 }
1264 #[repr(C)]
1265 #[derive(Debug, Copy, Clone)]
1266 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_12 {
1267     pub ifindex: __u32,
1268     pub attach_type: __u32,
1269 }
1270 #[repr(C)]
1271 #[derive(Debug, Copy, Clone)]
1272 pub struct bpf_link_info__bindgen_ty_1__bindgen_ty_13 {
1273     pub ifindex: __u32,
1274     pub attach_type: __u32,
1275 }
1276 #[repr(C)]
1277 #[derive(Debug, Copy, Clone)]
1278 pub struct bpf_func_info {
1279     pub insn_off: __u32,
1280     pub type_id: __u32,
1281 }
1282 #[repr(C)]
1283 #[derive(Debug, Copy, Clone)]
1284 pub struct bpf_line_info {
1285     pub insn_off: __u32,
1286     pub file_name_off: __u32,
1287     pub line_off: __u32,
1288     pub line_col: __u32,
1289 }
1290 pub const BPF_F_TIMER_ABS: _bindgen_ty_41 = 1;
1291 pub const BPF_F_TIMER_CPU_PIN: _bindgen_ty_41 = 2;
1292 pub type _bindgen_ty_41 = ::core::ffi::c_uint;
1293 #[repr(C)]
1294 #[derive(Debug, Copy, Clone)]
1295 pub struct btf_header {
1296     pub magic: __u16,
1297     pub version: __u8,
1298     pub flags: __u8,
1299     pub hdr_len: __u32,
1300     pub type_off: __u32,
1301     pub type_len: __u32,
1302     pub str_off: __u32,
1303     pub str_len: __u32,
1304 }
1305 #[repr(C)]
1306 #[derive(Copy, Clone)]
1307 pub struct btf_type {
1308     pub name_off: __u32,
1309     pub info: __u32,
1310     pub __bindgen_anon_1: btf_type__bindgen_ty_1,
1311 }
1312 #[repr(C)]
1313 #[derive(Copy, Clone)]
1314 pub union btf_type__bindgen_ty_1 {
1315     pub size: __u32,
1316     pub type_: __u32,
1317 }
1318 pub const BTF_KIND_UNKN: _bindgen_ty_42 = 0;
1319 pub const BTF_KIND_INT: _bindgen_ty_42 = 1;
1320 pub const BTF_KIND_PTR: _bindgen_ty_42 = 2;
1321 pub const BTF_KIND_ARRAY: _bindgen_ty_42 = 3;
1322 pub const BTF_KIND_STRUCT: _bindgen_ty_42 = 4;
1323 pub const BTF_KIND_UNION: _bindgen_ty_42 = 5;
1324 pub const BTF_KIND_ENUM: _bindgen_ty_42 = 6;
1325 pub const BTF_KIND_FWD: _bindgen_ty_42 = 7;
1326 pub const BTF_KIND_TYPEDEF: _bindgen_ty_42 = 8;
1327 pub const BTF_KIND_VOLATILE: _bindgen_ty_42 = 9;
1328 pub const BTF_KIND_CONST: _bindgen_ty_42 = 10;
1329 pub const BTF_KIND_RESTRICT: _bindgen_ty_42 = 11;
1330 pub const BTF_KIND_FUNC: _bindgen_ty_42 = 12;
1331 pub const BTF_KIND_FUNC_PROTO: _bindgen_ty_42 = 13;
1332 pub const BTF_KIND_VAR: _bindgen_ty_42 = 14;
1333 pub const BTF_KIND_DATASEC: _bindgen_ty_42 = 15;
1334 pub const BTF_KIND_FLOAT: _bindgen_ty_42 = 16;
1335 pub const BTF_KIND_DECL_TAG: _bindgen_ty_42 = 17;
1336 pub const BTF_KIND_TYPE_TAG: _bindgen_ty_42 = 18;
1337 pub const BTF_KIND_ENUM64: _bindgen_ty_42 = 19;
1338 pub const NR_BTF_KINDS: _bindgen_ty_42 = 20;
1339 pub const BTF_KIND_MAX: _bindgen_ty_42 = 19;
1340 pub type _bindgen_ty_42 = ::core::ffi::c_uint;
1341 #[repr(C)]
1342 #[derive(Debug, Copy, Clone)]
1343 pub struct btf_enum {
1344     pub name_off: __u32,
1345     pub val: __s32,
1346 }
1347 #[repr(C)]
1348 #[derive(Debug, Copy, Clone)]
1349 pub struct btf_array {
1350     pub type_: __u32,
1351     pub index_type: __u32,
1352     pub nelems: __u32,
1353 }
1354 #[repr(C)]
1355 #[derive(Debug, Copy, Clone)]
1356 pub struct btf_member {
1357     pub name_off: __u32,
1358     pub type_: __u32,
1359     pub offset: __u32,
1360 }
1361 #[repr(C)]
1362 #[derive(Debug, Copy, Clone)]
1363 pub struct btf_param {
1364     pub name_off: __u32,
1365     pub type_: __u32,
1366 }
1367 pub const BTF_VAR_STATIC: _bindgen_ty_43 = 0;
1368 pub const BTF_VAR_GLOBAL_ALLOCATED: _bindgen_ty_43 = 1;
1369 pub const BTF_VAR_GLOBAL_EXTERN: _bindgen_ty_43 = 2;
1370 pub type _bindgen_ty_43 = ::core::ffi::c_uint;
1371 #[repr(u32)]
1372 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1373 pub enum btf_func_linkage {
1374     BTF_FUNC_STATIC = 0,
1375     BTF_FUNC_GLOBAL = 1,
1376     BTF_FUNC_EXTERN = 2,
1377 }
1378 #[repr(C)]
1379 #[derive(Debug, Copy, Clone)]
1380 pub struct btf_var {
1381     pub linkage: __u32,
1382 }
1383 #[repr(C)]
1384 #[derive(Debug, Copy, Clone)]
1385 pub struct btf_var_secinfo {
1386     pub type_: __u32,
1387     pub offset: __u32,
1388     pub size: __u32,
1389 }
1390 #[repr(C)]
1391 #[derive(Debug, Copy, Clone)]
1392 pub struct btf_decl_tag {
1393     pub component_idx: __s32,
1394 }
1395 pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0;
1396 pub const IFLA_XDP_FD: _bindgen_ty_92 = 1;
1397 pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2;
1398 pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3;
1399 pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4;
1400 pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5;
1401 pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6;
1402 pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7;
1403 pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8;
1404 pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9;
1405 pub type _bindgen_ty_92 = ::core::ffi::c_uint;
1406 #[repr(u32)]
1407 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, FromPrimitive)]
1408 pub enum perf_type_id {
1409     PERF_TYPE_HARDWARE = 0,
1410     PERF_TYPE_SOFTWARE = 1,
1411     PERF_TYPE_TRACEPOINT = 2,
1412     PERF_TYPE_HW_CACHE = 3,
1413     PERF_TYPE_RAW = 4,
1414     PERF_TYPE_BREAKPOINT = 5,
1415     PERF_TYPE_MAX = 6,
1416 }
1417 #[repr(u32)]
1418 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1419 pub enum perf_hw_id {
1420     PERF_COUNT_HW_CPU_CYCLES = 0,
1421     PERF_COUNT_HW_INSTRUCTIONS = 1,
1422     PERF_COUNT_HW_CACHE_REFERENCES = 2,
1423     PERF_COUNT_HW_CACHE_MISSES = 3,
1424     PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
1425     PERF_COUNT_HW_BRANCH_MISSES = 5,
1426     PERF_COUNT_HW_BUS_CYCLES = 6,
1427     PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7,
1428     PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8,
1429     PERF_COUNT_HW_REF_CPU_CYCLES = 9,
1430     PERF_COUNT_HW_MAX = 10,
1431 }
1432 #[repr(u32)]
1433 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1434 pub enum perf_hw_cache_id {
1435     PERF_COUNT_HW_CACHE_L1D = 0,
1436     PERF_COUNT_HW_CACHE_L1I = 1,
1437     PERF_COUNT_HW_CACHE_LL = 2,
1438     PERF_COUNT_HW_CACHE_DTLB = 3,
1439     PERF_COUNT_HW_CACHE_ITLB = 4,
1440     PERF_COUNT_HW_CACHE_BPU = 5,
1441     PERF_COUNT_HW_CACHE_NODE = 6,
1442     PERF_COUNT_HW_CACHE_MAX = 7,
1443 }
1444 #[repr(u32)]
1445 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1446 pub enum perf_hw_cache_op_id {
1447     PERF_COUNT_HW_CACHE_OP_READ = 0,
1448     PERF_COUNT_HW_CACHE_OP_WRITE = 1,
1449     PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
1450     PERF_COUNT_HW_CACHE_OP_MAX = 3,
1451 }
1452 #[repr(u32)]
1453 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1454 pub enum perf_hw_cache_op_result_id {
1455     PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
1456     PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
1457     PERF_COUNT_HW_CACHE_RESULT_MAX = 2,
1458 }
1459 #[repr(u32)]
1460 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, FromPrimitive)]
1461 pub enum perf_sw_ids {
1462     PERF_COUNT_SW_CPU_CLOCK = 0,
1463     PERF_COUNT_SW_TASK_CLOCK = 1,
1464     PERF_COUNT_SW_PAGE_FAULTS = 2,
1465     PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
1466     PERF_COUNT_SW_CPU_MIGRATIONS = 4,
1467     PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
1468     PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
1469     PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
1470     PERF_COUNT_SW_EMULATION_FAULTS = 8,
1471     PERF_COUNT_SW_DUMMY = 9,
1472     PERF_COUNT_SW_BPF_OUTPUT = 10,
1473     PERF_COUNT_SW_CGROUP_SWITCHES = 11,
1474     PERF_COUNT_SW_MAX = 12,
1475 }
1476 #[repr(u32)]
1477 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, FromPrimitive)]
1478 pub enum perf_event_sample_format {
1479     PERF_SAMPLE_IP = 1,
1480     PERF_SAMPLE_TID = 2,
1481     PERF_SAMPLE_TIME = 4,
1482     PERF_SAMPLE_ADDR = 8,
1483     PERF_SAMPLE_READ = 16,
1484     PERF_SAMPLE_CALLCHAIN = 32,
1485     PERF_SAMPLE_ID = 64,
1486     PERF_SAMPLE_CPU = 128,
1487     PERF_SAMPLE_PERIOD = 256,
1488     PERF_SAMPLE_STREAM_ID = 512,
1489     PERF_SAMPLE_RAW = 1024,
1490     PERF_SAMPLE_BRANCH_STACK = 2048,
1491     PERF_SAMPLE_REGS_USER = 4096,
1492     PERF_SAMPLE_STACK_USER = 8192,
1493     PERF_SAMPLE_WEIGHT = 16384,
1494     PERF_SAMPLE_DATA_SRC = 32768,
1495     PERF_SAMPLE_IDENTIFIER = 65536,
1496     PERF_SAMPLE_TRANSACTION = 131072,
1497     PERF_SAMPLE_REGS_INTR = 262144,
1498     PERF_SAMPLE_PHYS_ADDR = 524288,
1499     PERF_SAMPLE_AUX = 1048576,
1500     PERF_SAMPLE_CGROUP = 2097152,
1501     PERF_SAMPLE_DATA_PAGE_SIZE = 4194304,
1502     PERF_SAMPLE_CODE_PAGE_SIZE = 8388608,
1503     PERF_SAMPLE_WEIGHT_STRUCT = 16777216,
1504     PERF_SAMPLE_MAX = 33554432,
1505 }
1506 #[repr(C)]
1507 #[derive(Copy, Clone)]
1508 pub struct perf_event_attr {
1509     pub type_: __u32,
1510     pub size: __u32,
1511     pub config: __u64,
1512     pub __bindgen_anon_1: perf_event_attr__bindgen_ty_1,
1513     pub sample_type: __u64,
1514     pub read_format: __u64,
1515     pub _bitfield_align_1: [u32; 0],
1516     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
1517     pub __bindgen_anon_2: perf_event_attr__bindgen_ty_2,
1518     pub bp_type: __u32,
1519     pub __bindgen_anon_3: perf_event_attr__bindgen_ty_3,
1520     pub __bindgen_anon_4: perf_event_attr__bindgen_ty_4,
1521     pub branch_sample_type: __u64,
1522     pub sample_regs_user: __u64,
1523     pub sample_stack_user: __u32,
1524     pub clockid: __s32,
1525     pub sample_regs_intr: __u64,
1526     pub aux_watermark: __u32,
1527     pub sample_max_stack: __u16,
1528     pub __reserved_2: __u16,
1529     pub aux_sample_size: __u32,
1530     pub __reserved_3: __u32,
1531     pub sig_data: __u64,
1532     pub config3: __u64,
1533 }
1534 #[repr(C)]
1535 #[derive(Copy, Clone)]
1536 pub union perf_event_attr__bindgen_ty_1 {
1537     pub sample_period: __u64,
1538     pub sample_freq: __u64,
1539 }
1540 #[repr(C)]
1541 #[derive(Copy, Clone)]
1542 pub union perf_event_attr__bindgen_ty_2 {
1543     pub wakeup_events: __u32,
1544     pub wakeup_watermark: __u32,
1545 }
1546 #[repr(C)]
1547 #[derive(Copy, Clone)]
1548 pub union perf_event_attr__bindgen_ty_3 {
1549     pub bp_addr: __u64,
1550     pub kprobe_func: __u64,
1551     pub uprobe_path: __u64,
1552     pub config1: __u64,
1553 }
1554 #[repr(C)]
1555 #[derive(Copy, Clone)]
1556 pub union perf_event_attr__bindgen_ty_4 {
1557     pub bp_len: __u64,
1558     pub kprobe_addr: __u64,
1559     pub probe_offset: __u64,
1560     pub config2: __u64,
1561 }
1562 impl perf_event_attr {
1563     #[inline]
1564     pub fn disabled(&self) -> __u64 {
1565         unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u64) }
1566     }
1567     #[inline]
1568     pub fn set_disabled(&mut self, val: __u64) {
1569         unsafe {
1570             let val: u64 = ::core::mem::transmute(val);
1571             self._bitfield_1.set(0usize, 1u8, val as u64)
1572         }
1573     }
1574     #[inline]
1575     pub fn inherit(&self) -> __u64 {
1576         unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u64) }
1577     }
1578     #[inline]
1579     pub fn set_inherit(&mut self, val: __u64) {
1580         unsafe {
1581             let val: u64 = ::core::mem::transmute(val);
1582             self._bitfield_1.set(1usize, 1u8, val as u64)
1583         }
1584     }
1585     #[inline]
1586     pub fn pinned(&self) -> __u64 {
1587         unsafe { ::core::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u64) }
1588     }
1589     #[inline]
1590     pub fn set_pinned(&mut self, val: __u64) {
1591         unsafe {
1592             let val: u64 = ::core::mem::transmute(val);
1593             self._bitfield_1.set(2usize, 1u8, val as u64)
1594         }
1595     }
1596     #[inline]
1597     pub fn exclusive(&self) -> __u64 {
1598         unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u64) }
1599     }
1600     #[inline]
1601     pub fn set_exclusive(&mut self, val: __u64) {
1602         unsafe {
1603             let val: u64 = ::core::mem::transmute(val);
1604             self._bitfield_1.set(3usize, 1u8, val as u64)
1605         }
1606     }
1607     #[inline]
1608     pub fn exclude_user(&self) -> __u64 {
1609         unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u64) }
1610     }
1611     #[inline]
1612     pub fn set_exclude_user(&mut self, val: __u64) {
1613         unsafe {
1614             let val: u64 = ::core::mem::transmute(val);
1615             self._bitfield_1.set(4usize, 1u8, val as u64)
1616         }
1617     }
1618     #[inline]
1619     pub fn exclude_kernel(&self) -> __u64 {
1620         unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u64) }
1621     }
1622     #[inline]
1623     pub fn set_exclude_kernel(&mut self, val: __u64) {
1624         unsafe {
1625             let val: u64 = ::core::mem::transmute(val);
1626             self._bitfield_1.set(5usize, 1u8, val as u64)
1627         }
1628     }
1629     #[inline]
1630     pub fn exclude_hv(&self) -> __u64 {
1631         unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u64) }
1632     }
1633     #[inline]
1634     pub fn set_exclude_hv(&mut self, val: __u64) {
1635         unsafe {
1636             let val: u64 = ::core::mem::transmute(val);
1637             self._bitfield_1.set(6usize, 1u8, val as u64)
1638         }
1639     }
1640     #[inline]
1641     pub fn exclude_idle(&self) -> __u64 {
1642         unsafe { ::core::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u64) }
1643     }
1644     #[inline]
1645     pub fn set_exclude_idle(&mut self, val: __u64) {
1646         unsafe {
1647             let val: u64 = ::core::mem::transmute(val);
1648             self._bitfield_1.set(7usize, 1u8, val as u64)
1649         }
1650     }
1651     #[inline]
1652     pub fn mmap(&self) -> __u64 {
1653         unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u64) }
1654     }
1655     #[inline]
1656     pub fn set_mmap(&mut self, val: __u64) {
1657         unsafe {
1658             let val: u64 = ::core::mem::transmute(val);
1659             self._bitfield_1.set(8usize, 1u8, val as u64)
1660         }
1661     }
1662     #[inline]
1663     pub fn comm(&self) -> __u64 {
1664         unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u64) }
1665     }
1666     #[inline]
1667     pub fn set_comm(&mut self, val: __u64) {
1668         unsafe {
1669             let val: u64 = ::core::mem::transmute(val);
1670             self._bitfield_1.set(9usize, 1u8, val as u64)
1671         }
1672     }
1673     #[inline]
1674     pub fn freq(&self) -> __u64 {
1675         unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u64) }
1676     }
1677     #[inline]
1678     pub fn set_freq(&mut self, val: __u64) {
1679         unsafe {
1680             let val: u64 = ::core::mem::transmute(val);
1681             self._bitfield_1.set(10usize, 1u8, val as u64)
1682         }
1683     }
1684     #[inline]
1685     pub fn inherit_stat(&self) -> __u64 {
1686         unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u64) }
1687     }
1688     #[inline]
1689     pub fn set_inherit_stat(&mut self, val: __u64) {
1690         unsafe {
1691             let val: u64 = ::core::mem::transmute(val);
1692             self._bitfield_1.set(11usize, 1u8, val as u64)
1693         }
1694     }
1695     #[inline]
1696     pub fn enable_on_exec(&self) -> __u64 {
1697         unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u64) }
1698     }
1699     #[inline]
1700     pub fn set_enable_on_exec(&mut self, val: __u64) {
1701         unsafe {
1702             let val: u64 = ::core::mem::transmute(val);
1703             self._bitfield_1.set(12usize, 1u8, val as u64)
1704         }
1705     }
1706     #[inline]
1707     pub fn task(&self) -> __u64 {
1708         unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u64) }
1709     }
1710     #[inline]
1711     pub fn set_task(&mut self, val: __u64) {
1712         unsafe {
1713             let val: u64 = ::core::mem::transmute(val);
1714             self._bitfield_1.set(13usize, 1u8, val as u64)
1715         }
1716     }
1717     #[inline]
1718     pub fn watermark(&self) -> __u64 {
1719         unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u64) }
1720     }
1721     #[inline]
1722     pub fn set_watermark(&mut self, val: __u64) {
1723         unsafe {
1724             let val: u64 = ::core::mem::transmute(val);
1725             self._bitfield_1.set(14usize, 1u8, val as u64)
1726         }
1727     }
1728     #[inline]
1729     pub fn precise_ip(&self) -> __u64 {
1730         unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 2u8) as u64) }
1731     }
1732     #[inline]
1733     pub fn set_precise_ip(&mut self, val: __u64) {
1734         unsafe {
1735             let val: u64 = ::core::mem::transmute(val);
1736             self._bitfield_1.set(15usize, 2u8, val as u64)
1737         }
1738     }
1739     #[inline]
1740     pub fn mmap_data(&self) -> __u64 {
1741         unsafe { ::core::mem::transmute(self._bitfield_1.get(17usize, 1u8) as u64) }
1742     }
1743     #[inline]
1744     pub fn set_mmap_data(&mut self, val: __u64) {
1745         unsafe {
1746             let val: u64 = ::core::mem::transmute(val);
1747             self._bitfield_1.set(17usize, 1u8, val as u64)
1748         }
1749     }
1750     #[inline]
1751     pub fn sample_id_all(&self) -> __u64 {
1752         unsafe { ::core::mem::transmute(self._bitfield_1.get(18usize, 1u8) as u64) }
1753     }
1754     #[inline]
1755     pub fn set_sample_id_all(&mut self, val: __u64) {
1756         unsafe {
1757             let val: u64 = ::core::mem::transmute(val);
1758             self._bitfield_1.set(18usize, 1u8, val as u64)
1759         }
1760     }
1761     #[inline]
1762     pub fn exclude_host(&self) -> __u64 {
1763         unsafe { ::core::mem::transmute(self._bitfield_1.get(19usize, 1u8) as u64) }
1764     }
1765     #[inline]
1766     pub fn set_exclude_host(&mut self, val: __u64) {
1767         unsafe {
1768             let val: u64 = ::core::mem::transmute(val);
1769             self._bitfield_1.set(19usize, 1u8, val as u64)
1770         }
1771     }
1772     #[inline]
1773     pub fn exclude_guest(&self) -> __u64 {
1774         unsafe { ::core::mem::transmute(self._bitfield_1.get(20usize, 1u8) as u64) }
1775     }
1776     #[inline]
1777     pub fn set_exclude_guest(&mut self, val: __u64) {
1778         unsafe {
1779             let val: u64 = ::core::mem::transmute(val);
1780             self._bitfield_1.set(20usize, 1u8, val as u64)
1781         }
1782     }
1783     #[inline]
1784     pub fn exclude_callchain_kernel(&self) -> __u64 {
1785         unsafe { ::core::mem::transmute(self._bitfield_1.get(21usize, 1u8) as u64) }
1786     }
1787     #[inline]
1788     pub fn set_exclude_callchain_kernel(&mut self, val: __u64) {
1789         unsafe {
1790             let val: u64 = ::core::mem::transmute(val);
1791             self._bitfield_1.set(21usize, 1u8, val as u64)
1792         }
1793     }
1794     #[inline]
1795     pub fn exclude_callchain_user(&self) -> __u64 {
1796         unsafe { ::core::mem::transmute(self._bitfield_1.get(22usize, 1u8) as u64) }
1797     }
1798     #[inline]
1799     pub fn set_exclude_callchain_user(&mut self, val: __u64) {
1800         unsafe {
1801             let val: u64 = ::core::mem::transmute(val);
1802             self._bitfield_1.set(22usize, 1u8, val as u64)
1803         }
1804     }
1805     #[inline]
1806     pub fn mmap2(&self) -> __u64 {
1807         unsafe { ::core::mem::transmute(self._bitfield_1.get(23usize, 1u8) as u64) }
1808     }
1809     #[inline]
1810     pub fn set_mmap2(&mut self, val: __u64) {
1811         unsafe {
1812             let val: u64 = ::core::mem::transmute(val);
1813             self._bitfield_1.set(23usize, 1u8, val as u64)
1814         }
1815     }
1816     #[inline]
1817     pub fn comm_exec(&self) -> __u64 {
1818         unsafe { ::core::mem::transmute(self._bitfield_1.get(24usize, 1u8) as u64) }
1819     }
1820     #[inline]
1821     pub fn set_comm_exec(&mut self, val: __u64) {
1822         unsafe {
1823             let val: u64 = ::core::mem::transmute(val);
1824             self._bitfield_1.set(24usize, 1u8, val as u64)
1825         }
1826     }
1827     #[inline]
1828     pub fn use_clockid(&self) -> __u64 {
1829         unsafe { ::core::mem::transmute(self._bitfield_1.get(25usize, 1u8) as u64) }
1830     }
1831     #[inline]
1832     pub fn set_use_clockid(&mut self, val: __u64) {
1833         unsafe {
1834             let val: u64 = ::core::mem::transmute(val);
1835             self._bitfield_1.set(25usize, 1u8, val as u64)
1836         }
1837     }
1838     #[inline]
1839     pub fn context_switch(&self) -> __u64 {
1840         unsafe { ::core::mem::transmute(self._bitfield_1.get(26usize, 1u8) as u64) }
1841     }
1842     #[inline]
1843     pub fn set_context_switch(&mut self, val: __u64) {
1844         unsafe {
1845             let val: u64 = ::core::mem::transmute(val);
1846             self._bitfield_1.set(26usize, 1u8, val as u64)
1847         }
1848     }
1849     #[inline]
1850     pub fn write_backward(&self) -> __u64 {
1851         unsafe { ::core::mem::transmute(self._bitfield_1.get(27usize, 1u8) as u64) }
1852     }
1853     #[inline]
1854     pub fn set_write_backward(&mut self, val: __u64) {
1855         unsafe {
1856             let val: u64 = ::core::mem::transmute(val);
1857             self._bitfield_1.set(27usize, 1u8, val as u64)
1858         }
1859     }
1860     #[inline]
1861     pub fn namespaces(&self) -> __u64 {
1862         unsafe { ::core::mem::transmute(self._bitfield_1.get(28usize, 1u8) as u64) }
1863     }
1864     #[inline]
1865     pub fn set_namespaces(&mut self, val: __u64) {
1866         unsafe {
1867             let val: u64 = ::core::mem::transmute(val);
1868             self._bitfield_1.set(28usize, 1u8, val as u64)
1869         }
1870     }
1871     #[inline]
1872     pub fn ksymbol(&self) -> __u64 {
1873         unsafe { ::core::mem::transmute(self._bitfield_1.get(29usize, 1u8) as u64) }
1874     }
1875     #[inline]
1876     pub fn set_ksymbol(&mut self, val: __u64) {
1877         unsafe {
1878             let val: u64 = ::core::mem::transmute(val);
1879             self._bitfield_1.set(29usize, 1u8, val as u64)
1880         }
1881     }
1882     #[inline]
1883     pub fn bpf_event(&self) -> __u64 {
1884         unsafe { ::core::mem::transmute(self._bitfield_1.get(30usize, 1u8) as u64) }
1885     }
1886     #[inline]
1887     pub fn set_bpf_event(&mut self, val: __u64) {
1888         unsafe {
1889             let val: u64 = ::core::mem::transmute(val);
1890             self._bitfield_1.set(30usize, 1u8, val as u64)
1891         }
1892     }
1893     #[inline]
1894     pub fn aux_output(&self) -> __u64 {
1895         unsafe { ::core::mem::transmute(self._bitfield_1.get(31usize, 1u8) as u64) }
1896     }
1897     #[inline]
1898     pub fn set_aux_output(&mut self, val: __u64) {
1899         unsafe {
1900             let val: u64 = ::core::mem::transmute(val);
1901             self._bitfield_1.set(31usize, 1u8, val as u64)
1902         }
1903     }
1904     #[inline]
1905     pub fn cgroup(&self) -> __u64 {
1906         unsafe { ::core::mem::transmute(self._bitfield_1.get(32usize, 1u8) as u64) }
1907     }
1908     #[inline]
1909     pub fn set_cgroup(&mut self, val: __u64) {
1910         unsafe {
1911             let val: u64 = ::core::mem::transmute(val);
1912             self._bitfield_1.set(32usize, 1u8, val as u64)
1913         }
1914     }
1915     #[inline]
1916     pub fn text_poke(&self) -> __u64 {
1917         unsafe { ::core::mem::transmute(self._bitfield_1.get(33usize, 1u8) as u64) }
1918     }
1919     #[inline]
1920     pub fn set_text_poke(&mut self, val: __u64) {
1921         unsafe {
1922             let val: u64 = ::core::mem::transmute(val);
1923             self._bitfield_1.set(33usize, 1u8, val as u64)
1924         }
1925     }
1926     #[inline]
1927     pub fn build_id(&self) -> __u64 {
1928         unsafe { ::core::mem::transmute(self._bitfield_1.get(34usize, 1u8) as u64) }
1929     }
1930     #[inline]
1931     pub fn set_build_id(&mut self, val: __u64) {
1932         unsafe {
1933             let val: u64 = ::core::mem::transmute(val);
1934             self._bitfield_1.set(34usize, 1u8, val as u64)
1935         }
1936     }
1937     #[inline]
1938     pub fn inherit_thread(&self) -> __u64 {
1939         unsafe { ::core::mem::transmute(self._bitfield_1.get(35usize, 1u8) as u64) }
1940     }
1941     #[inline]
1942     pub fn set_inherit_thread(&mut self, val: __u64) {
1943         unsafe {
1944             let val: u64 = ::core::mem::transmute(val);
1945             self._bitfield_1.set(35usize, 1u8, val as u64)
1946         }
1947     }
1948     #[inline]
1949     pub fn remove_on_exec(&self) -> __u64 {
1950         unsafe { ::core::mem::transmute(self._bitfield_1.get(36usize, 1u8) as u64) }
1951     }
1952     #[inline]
1953     pub fn set_remove_on_exec(&mut self, val: __u64) {
1954         unsafe {
1955             let val: u64 = ::core::mem::transmute(val);
1956             self._bitfield_1.set(36usize, 1u8, val as u64)
1957         }
1958     }
1959     #[inline]
1960     pub fn sigtrap(&self) -> __u64 {
1961         unsafe { ::core::mem::transmute(self._bitfield_1.get(37usize, 1u8) as u64) }
1962     }
1963     #[inline]
1964     pub fn set_sigtrap(&mut self, val: __u64) {
1965         unsafe {
1966             let val: u64 = ::core::mem::transmute(val);
1967             self._bitfield_1.set(37usize, 1u8, val as u64)
1968         }
1969     }
1970     #[inline]
1971     pub fn __reserved_1(&self) -> __u64 {
1972         unsafe { ::core::mem::transmute(self._bitfield_1.get(38usize, 26u8) as u64) }
1973     }
1974     #[inline]
1975     pub fn set___reserved_1(&mut self, val: __u64) {
1976         unsafe {
1977             let val: u64 = ::core::mem::transmute(val);
1978             self._bitfield_1.set(38usize, 26u8, val as u64)
1979         }
1980     }
1981     #[inline]
1982     pub fn new_bitfield_1(
1983         disabled: __u64,
1984         inherit: __u64,
1985         pinned: __u64,
1986         exclusive: __u64,
1987         exclude_user: __u64,
1988         exclude_kernel: __u64,
1989         exclude_hv: __u64,
1990         exclude_idle: __u64,
1991         mmap: __u64,
1992         comm: __u64,
1993         freq: __u64,
1994         inherit_stat: __u64,
1995         enable_on_exec: __u64,
1996         task: __u64,
1997         watermark: __u64,
1998         precise_ip: __u64,
1999         mmap_data: __u64,
2000         sample_id_all: __u64,
2001         exclude_host: __u64,
2002         exclude_guest: __u64,
2003         exclude_callchain_kernel: __u64,
2004         exclude_callchain_user: __u64,
2005         mmap2: __u64,
2006         comm_exec: __u64,
2007         use_clockid: __u64,
2008         context_switch: __u64,
2009         write_backward: __u64,
2010         namespaces: __u64,
2011         ksymbol: __u64,
2012         bpf_event: __u64,
2013         aux_output: __u64,
2014         cgroup: __u64,
2015         text_poke: __u64,
2016         build_id: __u64,
2017         inherit_thread: __u64,
2018         remove_on_exec: __u64,
2019         sigtrap: __u64,
2020         __reserved_1: __u64,
2021     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
2022         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
2023         __bindgen_bitfield_unit.set(0usize, 1u8, {
2024             let disabled: u64 = unsafe { ::core::mem::transmute(disabled) };
2025             disabled as u64
2026         });
2027         __bindgen_bitfield_unit.set(1usize, 1u8, {
2028             let inherit: u64 = unsafe { ::core::mem::transmute(inherit) };
2029             inherit as u64
2030         });
2031         __bindgen_bitfield_unit.set(2usize, 1u8, {
2032             let pinned: u64 = unsafe { ::core::mem::transmute(pinned) };
2033             pinned as u64
2034         });
2035         __bindgen_bitfield_unit.set(3usize, 1u8, {
2036             let exclusive: u64 = unsafe { ::core::mem::transmute(exclusive) };
2037             exclusive as u64
2038         });
2039         __bindgen_bitfield_unit.set(4usize, 1u8, {
2040             let exclude_user: u64 = unsafe { ::core::mem::transmute(exclude_user) };
2041             exclude_user as u64
2042         });
2043         __bindgen_bitfield_unit.set(5usize, 1u8, {
2044             let exclude_kernel: u64 = unsafe { ::core::mem::transmute(exclude_kernel) };
2045             exclude_kernel as u64
2046         });
2047         __bindgen_bitfield_unit.set(6usize, 1u8, {
2048             let exclude_hv: u64 = unsafe { ::core::mem::transmute(exclude_hv) };
2049             exclude_hv as u64
2050         });
2051         __bindgen_bitfield_unit.set(7usize, 1u8, {
2052             let exclude_idle: u64 = unsafe { ::core::mem::transmute(exclude_idle) };
2053             exclude_idle as u64
2054         });
2055         __bindgen_bitfield_unit.set(8usize, 1u8, {
2056             let mmap: u64 = unsafe { ::core::mem::transmute(mmap) };
2057             mmap as u64
2058         });
2059         __bindgen_bitfield_unit.set(9usize, 1u8, {
2060             let comm: u64 = unsafe { ::core::mem::transmute(comm) };
2061             comm as u64
2062         });
2063         __bindgen_bitfield_unit.set(10usize, 1u8, {
2064             let freq: u64 = unsafe { ::core::mem::transmute(freq) };
2065             freq as u64
2066         });
2067         __bindgen_bitfield_unit.set(11usize, 1u8, {
2068             let inherit_stat: u64 = unsafe { ::core::mem::transmute(inherit_stat) };
2069             inherit_stat as u64
2070         });
2071         __bindgen_bitfield_unit.set(12usize, 1u8, {
2072             let enable_on_exec: u64 = unsafe { ::core::mem::transmute(enable_on_exec) };
2073             enable_on_exec as u64
2074         });
2075         __bindgen_bitfield_unit.set(13usize, 1u8, {
2076             let task: u64 = unsafe { ::core::mem::transmute(task) };
2077             task as u64
2078         });
2079         __bindgen_bitfield_unit.set(14usize, 1u8, {
2080             let watermark: u64 = unsafe { ::core::mem::transmute(watermark) };
2081             watermark as u64
2082         });
2083         __bindgen_bitfield_unit.set(15usize, 2u8, {
2084             let precise_ip: u64 = unsafe { ::core::mem::transmute(precise_ip) };
2085             precise_ip as u64
2086         });
2087         __bindgen_bitfield_unit.set(17usize, 1u8, {
2088             let mmap_data: u64 = unsafe { ::core::mem::transmute(mmap_data) };
2089             mmap_data as u64
2090         });
2091         __bindgen_bitfield_unit.set(18usize, 1u8, {
2092             let sample_id_all: u64 = unsafe { ::core::mem::transmute(sample_id_all) };
2093             sample_id_all as u64
2094         });
2095         __bindgen_bitfield_unit.set(19usize, 1u8, {
2096             let exclude_host: u64 = unsafe { ::core::mem::transmute(exclude_host) };
2097             exclude_host as u64
2098         });
2099         __bindgen_bitfield_unit.set(20usize, 1u8, {
2100             let exclude_guest: u64 = unsafe { ::core::mem::transmute(exclude_guest) };
2101             exclude_guest as u64
2102         });
2103         __bindgen_bitfield_unit.set(21usize, 1u8, {
2104             let exclude_callchain_kernel: u64 =
2105                 unsafe { ::core::mem::transmute(exclude_callchain_kernel) };
2106             exclude_callchain_kernel as u64
2107         });
2108         __bindgen_bitfield_unit.set(22usize, 1u8, {
2109             let exclude_callchain_user: u64 =
2110                 unsafe { ::core::mem::transmute(exclude_callchain_user) };
2111             exclude_callchain_user as u64
2112         });
2113         __bindgen_bitfield_unit.set(23usize, 1u8, {
2114             let mmap2: u64 = unsafe { ::core::mem::transmute(mmap2) };
2115             mmap2 as u64
2116         });
2117         __bindgen_bitfield_unit.set(24usize, 1u8, {
2118             let comm_exec: u64 = unsafe { ::core::mem::transmute(comm_exec) };
2119             comm_exec as u64
2120         });
2121         __bindgen_bitfield_unit.set(25usize, 1u8, {
2122             let use_clockid: u64 = unsafe { ::core::mem::transmute(use_clockid) };
2123             use_clockid as u64
2124         });
2125         __bindgen_bitfield_unit.set(26usize, 1u8, {
2126             let context_switch: u64 = unsafe { ::core::mem::transmute(context_switch) };
2127             context_switch as u64
2128         });
2129         __bindgen_bitfield_unit.set(27usize, 1u8, {
2130             let write_backward: u64 = unsafe { ::core::mem::transmute(write_backward) };
2131             write_backward as u64
2132         });
2133         __bindgen_bitfield_unit.set(28usize, 1u8, {
2134             let namespaces: u64 = unsafe { ::core::mem::transmute(namespaces) };
2135             namespaces as u64
2136         });
2137         __bindgen_bitfield_unit.set(29usize, 1u8, {
2138             let ksymbol: u64 = unsafe { ::core::mem::transmute(ksymbol) };
2139             ksymbol as u64
2140         });
2141         __bindgen_bitfield_unit.set(30usize, 1u8, {
2142             let bpf_event: u64 = unsafe { ::core::mem::transmute(bpf_event) };
2143             bpf_event as u64
2144         });
2145         __bindgen_bitfield_unit.set(31usize, 1u8, {
2146             let aux_output: u64 = unsafe { ::core::mem::transmute(aux_output) };
2147             aux_output as u64
2148         });
2149         __bindgen_bitfield_unit.set(32usize, 1u8, {
2150             let cgroup: u64 = unsafe { ::core::mem::transmute(cgroup) };
2151             cgroup as u64
2152         });
2153         __bindgen_bitfield_unit.set(33usize, 1u8, {
2154             let text_poke: u64 = unsafe { ::core::mem::transmute(text_poke) };
2155             text_poke as u64
2156         });
2157         __bindgen_bitfield_unit.set(34usize, 1u8, {
2158             let build_id: u64 = unsafe { ::core::mem::transmute(build_id) };
2159             build_id as u64
2160         });
2161         __bindgen_bitfield_unit.set(35usize, 1u8, {
2162             let inherit_thread: u64 = unsafe { ::core::mem::transmute(inherit_thread) };
2163             inherit_thread as u64
2164         });
2165         __bindgen_bitfield_unit.set(36usize, 1u8, {
2166             let remove_on_exec: u64 = unsafe { ::core::mem::transmute(remove_on_exec) };
2167             remove_on_exec as u64
2168         });
2169         __bindgen_bitfield_unit.set(37usize, 1u8, {
2170             let sigtrap: u64 = unsafe { ::core::mem::transmute(sigtrap) };
2171             sigtrap as u64
2172         });
2173         __bindgen_bitfield_unit.set(38usize, 26u8, {
2174             let __reserved_1: u64 = unsafe { ::core::mem::transmute(__reserved_1) };
2175             __reserved_1 as u64
2176         });
2177         __bindgen_bitfield_unit
2178     }
2179 }
2180 #[repr(C)]
2181 #[derive(Copy, Clone)]
2182 pub struct perf_event_mmap_page {
2183     pub version: __u32,
2184     pub compat_version: __u32,
2185     pub lock: __u32,
2186     pub index: __u32,
2187     pub offset: __s64,
2188     pub time_enabled: __u64,
2189     pub time_running: __u64,
2190     pub __bindgen_anon_1: perf_event_mmap_page__bindgen_ty_1,
2191     pub pmc_width: __u16,
2192     pub time_shift: __u16,
2193     pub time_mult: __u32,
2194     pub time_offset: __u64,
2195     pub time_zero: __u64,
2196     pub size: __u32,
2197     pub __reserved_1: __u32,
2198     pub time_cycles: __u64,
2199     pub time_mask: __u64,
2200     pub __reserved: [__u8; 928usize],
2201     pub data_head: __u64,
2202     pub data_tail: __u64,
2203     pub data_offset: __u64,
2204     pub data_size: __u64,
2205     pub aux_head: __u64,
2206     pub aux_tail: __u64,
2207     pub aux_offset: __u64,
2208     pub aux_size: __u64,
2209 }
2210 #[repr(C)]
2211 #[derive(Copy, Clone)]
2212 pub union perf_event_mmap_page__bindgen_ty_1 {
2213     pub capabilities: __u64,
2214     pub __bindgen_anon_1: perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1,
2215 }
2216 #[repr(C)]
2217 #[derive(Debug, Copy, Clone)]
2218 pub struct perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
2219     pub _bitfield_align_1: [u64; 0],
2220     pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
2221 }
2222 impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
2223     #[inline]
2224     pub fn cap_bit0(&self) -> __u64 {
2225         unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u64) }
2226     }
2227     #[inline]
2228     pub fn set_cap_bit0(&mut self, val: __u64) {
2229         unsafe {
2230             let val: u64 = ::core::mem::transmute(val);
2231             self._bitfield_1.set(0usize, 1u8, val as u64)
2232         }
2233     }
2234     #[inline]
2235     pub fn cap_bit0_is_deprecated(&self) -> __u64 {
2236         unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u64) }
2237     }
2238     #[inline]
2239     pub fn set_cap_bit0_is_deprecated(&mut self, val: __u64) {
2240         unsafe {
2241             let val: u64 = ::core::mem::transmute(val);
2242             self._bitfield_1.set(1usize, 1u8, val as u64)
2243         }
2244     }
2245     #[inline]
2246     pub fn cap_user_rdpmc(&self) -> __u64 {
2247         unsafe { ::core::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u64) }
2248     }
2249     #[inline]
2250     pub fn set_cap_user_rdpmc(&mut self, val: __u64) {
2251         unsafe {
2252             let val: u64 = ::core::mem::transmute(val);
2253             self._bitfield_1.set(2usize, 1u8, val as u64)
2254         }
2255     }
2256     #[inline]
2257     pub fn cap_user_time(&self) -> __u64 {
2258         unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u64) }
2259     }
2260     #[inline]
2261     pub fn set_cap_user_time(&mut self, val: __u64) {
2262         unsafe {
2263             let val: u64 = ::core::mem::transmute(val);
2264             self._bitfield_1.set(3usize, 1u8, val as u64)
2265         }
2266     }
2267     #[inline]
2268     pub fn cap_user_time_zero(&self) -> __u64 {
2269         unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u64) }
2270     }
2271     #[inline]
2272     pub fn set_cap_user_time_zero(&mut self, val: __u64) {
2273         unsafe {
2274             let val: u64 = ::core::mem::transmute(val);
2275             self._bitfield_1.set(4usize, 1u8, val as u64)
2276         }
2277     }
2278     #[inline]
2279     pub fn cap_user_time_short(&self) -> __u64 {
2280         unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u64) }
2281     }
2282     #[inline]
2283     pub fn set_cap_user_time_short(&mut self, val: __u64) {
2284         unsafe {
2285             let val: u64 = ::core::mem::transmute(val);
2286             self._bitfield_1.set(5usize, 1u8, val as u64)
2287         }
2288     }
2289     #[inline]
2290     pub fn cap_____res(&self) -> __u64 {
2291         unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 58u8) as u64) }
2292     }
2293     #[inline]
2294     pub fn set_cap_____res(&mut self, val: __u64) {
2295         unsafe {
2296             let val: u64 = ::core::mem::transmute(val);
2297             self._bitfield_1.set(6usize, 58u8, val as u64)
2298         }
2299     }
2300     #[inline]
2301     pub fn new_bitfield_1(
2302         cap_bit0: __u64,
2303         cap_bit0_is_deprecated: __u64,
2304         cap_user_rdpmc: __u64,
2305         cap_user_time: __u64,
2306         cap_user_time_zero: __u64,
2307         cap_user_time_short: __u64,
2308         cap_____res: __u64,
2309     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
2310         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
2311         __bindgen_bitfield_unit.set(0usize, 1u8, {
2312             let cap_bit0: u64 = unsafe { ::core::mem::transmute(cap_bit0) };
2313             cap_bit0 as u64
2314         });
2315         __bindgen_bitfield_unit.set(1usize, 1u8, {
2316             let cap_bit0_is_deprecated: u64 =
2317                 unsafe { ::core::mem::transmute(cap_bit0_is_deprecated) };
2318             cap_bit0_is_deprecated as u64
2319         });
2320         __bindgen_bitfield_unit.set(2usize, 1u8, {
2321             let cap_user_rdpmc: u64 = unsafe { ::core::mem::transmute(cap_user_rdpmc) };
2322             cap_user_rdpmc as u64
2323         });
2324         __bindgen_bitfield_unit.set(3usize, 1u8, {
2325             let cap_user_time: u64 = unsafe { ::core::mem::transmute(cap_user_time) };
2326             cap_user_time as u64
2327         });
2328         __bindgen_bitfield_unit.set(4usize, 1u8, {
2329             let cap_user_time_zero: u64 = unsafe { ::core::mem::transmute(cap_user_time_zero) };
2330             cap_user_time_zero as u64
2331         });
2332         __bindgen_bitfield_unit.set(5usize, 1u8, {
2333             let cap_user_time_short: u64 = unsafe { ::core::mem::transmute(cap_user_time_short) };
2334             cap_user_time_short as u64
2335         });
2336         __bindgen_bitfield_unit.set(6usize, 58u8, {
2337             let cap_____res: u64 = unsafe { ::core::mem::transmute(cap_____res) };
2338             cap_____res as u64
2339         });
2340         __bindgen_bitfield_unit
2341     }
2342 }
2343 #[repr(C)]
2344 #[derive(Debug, Copy, Clone)]
2345 pub struct perf_event_header {
2346     pub type_: __u32,
2347     pub misc: __u16,
2348     pub size: __u16,
2349 }
2350 #[repr(u32)]
2351 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, ToPrimitive)]
2352 pub enum perf_event_type {
2353     PERF_RECORD_MMAP = 1,
2354     PERF_RECORD_LOST = 2,
2355     PERF_RECORD_COMM = 3,
2356     PERF_RECORD_EXIT = 4,
2357     PERF_RECORD_THROTTLE = 5,
2358     PERF_RECORD_UNTHROTTLE = 6,
2359     PERF_RECORD_FORK = 7,
2360     PERF_RECORD_READ = 8,
2361     PERF_RECORD_SAMPLE = 9,
2362     PERF_RECORD_MMAP2 = 10,
2363     PERF_RECORD_AUX = 11,
2364     PERF_RECORD_ITRACE_START = 12,
2365     PERF_RECORD_LOST_SAMPLES = 13,
2366     PERF_RECORD_SWITCH = 14,
2367     PERF_RECORD_SWITCH_CPU_WIDE = 15,
2368     PERF_RECORD_NAMESPACES = 16,
2369     PERF_RECORD_KSYMBOL = 17,
2370     PERF_RECORD_BPF_EVENT = 18,
2371     PERF_RECORD_CGROUP = 19,
2372     PERF_RECORD_TEXT_POKE = 20,
2373     PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
2374     PERF_RECORD_MAX = 22,
2375 }
2376 pub const TCA_BPF_UNSPEC: _bindgen_ty_152 = 0;
2377 pub const TCA_BPF_ACT: _bindgen_ty_152 = 1;
2378 pub const TCA_BPF_POLICE: _bindgen_ty_152 = 2;
2379 pub const TCA_BPF_CLASSID: _bindgen_ty_152 = 3;
2380 pub const TCA_BPF_OPS_LEN: _bindgen_ty_152 = 4;
2381 pub const TCA_BPF_OPS: _bindgen_ty_152 = 5;
2382 pub const TCA_BPF_FD: _bindgen_ty_152 = 6;
2383 pub const TCA_BPF_NAME: _bindgen_ty_152 = 7;
2384 pub const TCA_BPF_FLAGS: _bindgen_ty_152 = 8;
2385 pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_152 = 9;
2386 pub const TCA_BPF_TAG: _bindgen_ty_152 = 10;
2387 pub const TCA_BPF_ID: _bindgen_ty_152 = 11;
2388 pub const __TCA_BPF_MAX: _bindgen_ty_152 = 12;
2389 pub type _bindgen_ty_152 = ::core::ffi::c_uint;
2390 #[repr(C)]
2391 #[derive(Debug, Copy, Clone)]
2392 pub struct ifinfomsg {
2393     pub ifi_family: ::core::ffi::c_uchar,
2394     pub __ifi_pad: ::core::ffi::c_uchar,
2395     pub ifi_type: ::core::ffi::c_ushort,
2396     pub ifi_index: ::core::ffi::c_int,
2397     pub ifi_flags: ::core::ffi::c_uint,
2398     pub ifi_change: ::core::ffi::c_uint,
2399 }
2400 #[repr(C)]
2401 #[derive(Debug, Copy, Clone)]
2402 pub struct tcmsg {
2403     pub tcm_family: ::core::ffi::c_uchar,
2404     pub tcm__pad1: ::core::ffi::c_uchar,
2405     pub tcm__pad2: ::core::ffi::c_ushort,
2406     pub tcm_ifindex: ::core::ffi::c_int,
2407     pub tcm_handle: __u32,
2408     pub tcm_parent: __u32,
2409     pub tcm_info: __u32,
2410 }
2411 pub const TCA_UNSPEC: _bindgen_ty_170 = 0;
2412 pub const TCA_KIND: _bindgen_ty_170 = 1;
2413 pub const TCA_OPTIONS: _bindgen_ty_170 = 2;
2414 pub const TCA_STATS: _bindgen_ty_170 = 3;
2415 pub const TCA_XSTATS: _bindgen_ty_170 = 4;
2416 pub const TCA_RATE: _bindgen_ty_170 = 5;
2417 pub const TCA_FCNT: _bindgen_ty_170 = 6;
2418 pub const TCA_STATS2: _bindgen_ty_170 = 7;
2419 pub const TCA_STAB: _bindgen_ty_170 = 8;
2420 pub const TCA_PAD: _bindgen_ty_170 = 9;
2421 pub const TCA_DUMP_INVISIBLE: _bindgen_ty_170 = 10;
2422 pub const TCA_CHAIN: _bindgen_ty_170 = 11;
2423 pub const TCA_HW_OFFLOAD: _bindgen_ty_170 = 12;
2424 pub const TCA_INGRESS_BLOCK: _bindgen_ty_170 = 13;
2425 pub const TCA_EGRESS_BLOCK: _bindgen_ty_170 = 14;
2426 pub const __TCA_MAX: _bindgen_ty_170 = 15;
2427 pub type _bindgen_ty_170 = ::core::ffi::c_uint;
2428 pub const AYA_PERF_EVENT_IOC_ENABLE: ::core::ffi::c_int = 9216;
2429 pub const AYA_PERF_EVENT_IOC_DISABLE: ::core::ffi::c_int = 9217;
2430 pub const AYA_PERF_EVENT_IOC_SET_BPF: ::core::ffi::c_int = 1074013192;
2431