diff --git a/aya/src/generated/linux_bindings_aarch64.rs b/aya/src/generated/linux_bindings_aarch64.rs
index a86e49f8..c4680a84 100644
--- a/aya/src/generated/linux_bindings_aarch64.rs
+++ b/aya/src/generated/linux_bindings_aarch64.rs
@@ -717,8 +717,9 @@ pub const BTF_KIND_VAR: ::std::os::raw::c_uint = 14;
 pub const BTF_KIND_DATASEC: ::std::os::raw::c_uint = 15;
 pub const BTF_KIND_FLOAT: ::std::os::raw::c_uint = 16;
 pub const BTF_KIND_DECL_TAG: ::std::os::raw::c_uint = 17;
-pub const NR_BTF_KINDS: ::std::os::raw::c_uint = 18;
-pub const BTF_KIND_MAX: ::std::os::raw::c_uint = 17;
+pub const BTF_KIND_TYPE_TAG: ::std::os::raw::c_uint = 18;
+pub const NR_BTF_KINDS: ::std::os::raw::c_uint = 19;
+pub const BTF_KIND_MAX: ::std::os::raw::c_uint = 18;
 pub type _bindgen_ty_37 = ::std::os::raw::c_uint;
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -825,7 +826,8 @@ pub enum perf_sw_ids {
     PERF_COUNT_SW_EMULATION_FAULTS = 8,
     PERF_COUNT_SW_DUMMY = 9,
     PERF_COUNT_SW_BPF_OUTPUT = 10,
-    PERF_COUNT_SW_MAX = 11,
+    PERF_COUNT_SW_CGROUP_SWITCHES = 11,
+    PERF_COUNT_SW_MAX = 12,
 }
 #[repr(u64)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -850,7 +852,12 @@ pub enum perf_event_sample_format {
     PERF_SAMPLE_TRANSACTION = 131072,
     PERF_SAMPLE_REGS_INTR = 262144,
     PERF_SAMPLE_PHYS_ADDR = 524288,
-    PERF_SAMPLE_MAX = 1048576,
+    PERF_SAMPLE_AUX = 1048576,
+    PERF_SAMPLE_CGROUP = 2097152,
+    PERF_SAMPLE_DATA_PAGE_SIZE = 4194304,
+    PERF_SAMPLE_CODE_PAGE_SIZE = 8388608,
+    PERF_SAMPLE_WEIGHT_STRUCT = 16777216,
+    PERF_SAMPLE_MAX = 33554432,
     __PERF_SAMPLE_CALLCHAIN_EARLY = 9223372036854775808,
 }
 #[repr(C)]
@@ -876,6 +883,9 @@ pub struct perf_event_attr {
     pub aux_watermark: __u32,
     pub sample_max_stack: __u16,
     pub __reserved_2: __u16,
+    pub aux_sample_size: __u32,
+    pub __reserved_3: __u32,
+    pub sig_data: __u64,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -1248,14 +1258,80 @@ impl perf_event_attr {
         }
     }
     #[inline]
+    pub fn cgroup(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_cgroup(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(32usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn text_poke(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(33usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_text_poke(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(33usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn build_id(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(34usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_build_id(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(34usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn inherit_thread(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(35usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_inherit_thread(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(35usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn remove_on_exec(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(36usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_remove_on_exec(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(36usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn sigtrap(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(37usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_sigtrap(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(37usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
     pub fn __reserved_1(&self) -> __u64 {
-        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 32u8) as u64) }
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(38usize, 26u8) as u64) }
     }
     #[inline]
     pub fn set___reserved_1(&mut self, val: __u64) {
         unsafe {
             let val: u64 = ::std::mem::transmute(val);
-            self._bitfield_1.set(32usize, 32u8, val as u64)
+            self._bitfield_1.set(38usize, 26u8, val as u64)
         }
     }
     #[inline]
@@ -1291,6 +1367,12 @@ impl perf_event_attr {
         ksymbol: __u64,
         bpf_event: __u64,
         aux_output: __u64,
+        cgroup: __u64,
+        text_poke: __u64,
+        build_id: __u64,
+        inherit_thread: __u64,
+        remove_on_exec: __u64,
+        sigtrap: __u64,
         __reserved_1: __u64,
     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
@@ -1420,7 +1502,31 @@ impl perf_event_attr {
             let aux_output: u64 = unsafe { ::std::mem::transmute(aux_output) };
             aux_output as u64
         });
-        __bindgen_bitfield_unit.set(32usize, 32u8, {
+        __bindgen_bitfield_unit.set(32usize, 1u8, {
+            let cgroup: u64 = unsafe { ::std::mem::transmute(cgroup) };
+            cgroup as u64
+        });
+        __bindgen_bitfield_unit.set(33usize, 1u8, {
+            let text_poke: u64 = unsafe { ::std::mem::transmute(text_poke) };
+            text_poke as u64
+        });
+        __bindgen_bitfield_unit.set(34usize, 1u8, {
+            let build_id: u64 = unsafe { ::std::mem::transmute(build_id) };
+            build_id as u64
+        });
+        __bindgen_bitfield_unit.set(35usize, 1u8, {
+            let inherit_thread: u64 = unsafe { ::std::mem::transmute(inherit_thread) };
+            inherit_thread as u64
+        });
+        __bindgen_bitfield_unit.set(36usize, 1u8, {
+            let remove_on_exec: u64 = unsafe { ::std::mem::transmute(remove_on_exec) };
+            remove_on_exec as u64
+        });
+        __bindgen_bitfield_unit.set(37usize, 1u8, {
+            let sigtrap: u64 = unsafe { ::std::mem::transmute(sigtrap) };
+            sigtrap as u64
+        });
+        __bindgen_bitfield_unit.set(38usize, 26u8, {
             let __reserved_1: u64 = unsafe { ::std::mem::transmute(__reserved_1) };
             __reserved_1 as u64
         });
@@ -1444,7 +1550,10 @@ pub struct perf_event_mmap_page {
     pub time_offset: __u64,
     pub time_zero: __u64,
     pub size: __u32,
-    pub __reserved: [__u8; 948usize],
+    pub __reserved_1: __u32,
+    pub time_cycles: __u64,
+    pub time_mask: __u64,
+    pub __reserved: [__u8; 928usize],
     pub data_head: __u64,
     pub data_tail: __u64,
     pub data_offset: __u64,
@@ -1524,14 +1633,25 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
         }
     }
     #[inline]
+    pub fn cap_user_time_short(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_cap_user_time_short(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(5usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
     pub fn cap_____res(&self) -> __u64 {
-        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 59u8) as u64) }
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 58u8) as u64) }
     }
     #[inline]
     pub fn set_cap_____res(&mut self, val: __u64) {
         unsafe {
             let val: u64 = ::std::mem::transmute(val);
-            self._bitfield_1.set(5usize, 59u8, val as u64)
+            self._bitfield_1.set(6usize, 58u8, val as u64)
         }
     }
     #[inline]
@@ -1541,6 +1661,7 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
         cap_user_rdpmc: __u64,
         cap_user_time: __u64,
         cap_user_time_zero: __u64,
+        cap_user_time_short: __u64,
         cap_____res: __u64,
     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
@@ -1565,7 +1686,11 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
             let cap_user_time_zero: u64 = unsafe { ::std::mem::transmute(cap_user_time_zero) };
             cap_user_time_zero as u64
         });
-        __bindgen_bitfield_unit.set(5usize, 59u8, {
+        __bindgen_bitfield_unit.set(5usize, 1u8, {
+            let cap_user_time_short: u64 = unsafe { ::std::mem::transmute(cap_user_time_short) };
+            cap_user_time_short as u64
+        });
+        __bindgen_bitfield_unit.set(6usize, 58u8, {
             let cap_____res: u64 = unsafe { ::std::mem::transmute(cap_____res) };
             cap_____res as u64
         });
@@ -1600,7 +1725,9 @@ pub enum perf_event_type {
     PERF_RECORD_NAMESPACES = 16,
     PERF_RECORD_KSYMBOL = 17,
     PERF_RECORD_BPF_EVENT = 18,
-    PERF_RECORD_MAX = 19,
+    PERF_RECORD_CGROUP = 19,
+    PERF_RECORD_TEXT_POKE = 20,
+    PERF_RECORD_MAX = 21,
 }
 pub const IFLA_XDP_UNSPEC: _bindgen_ty_81 = _bindgen_ty_81::IFLA_XDP_UNSPEC;
 pub const IFLA_XDP_FD: _bindgen_ty_81 = _bindgen_ty_81::IFLA_XDP_FD;
@@ -1647,25 +1774,26 @@ pub struct tcmsg {
     pub tcm_parent: __u32,
     pub tcm_info: __u32,
 }
-pub const TCA_UNSPEC: _bindgen_ty_93 = _bindgen_ty_93::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_93 = _bindgen_ty_93::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_93 = _bindgen_ty_93::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_93 = _bindgen_ty_93::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_93 = _bindgen_ty_93::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_93 = _bindgen_ty_93::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_93 = _bindgen_ty_93::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_93 = _bindgen_ty_93::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_93 = _bindgen_ty_93::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_93 = _bindgen_ty_93::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_93 = _bindgen_ty_93::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_93 = _bindgen_ty_93::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_93 = _bindgen_ty_93::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_93 = _bindgen_ty_93::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_93 = _bindgen_ty_93::TCA_EGRESS_BLOCK;
-pub const __TCA_MAX: _bindgen_ty_93 = _bindgen_ty_93::__TCA_MAX;
+pub const TCA_UNSPEC: _bindgen_ty_95 = _bindgen_ty_95::TCA_UNSPEC;
+pub const TCA_KIND: _bindgen_ty_95 = _bindgen_ty_95::TCA_KIND;
+pub const TCA_OPTIONS: _bindgen_ty_95 = _bindgen_ty_95::TCA_OPTIONS;
+pub const TCA_STATS: _bindgen_ty_95 = _bindgen_ty_95::TCA_STATS;
+pub const TCA_XSTATS: _bindgen_ty_95 = _bindgen_ty_95::TCA_XSTATS;
+pub const TCA_RATE: _bindgen_ty_95 = _bindgen_ty_95::TCA_RATE;
+pub const TCA_FCNT: _bindgen_ty_95 = _bindgen_ty_95::TCA_FCNT;
+pub const TCA_STATS2: _bindgen_ty_95 = _bindgen_ty_95::TCA_STATS2;
+pub const TCA_STAB: _bindgen_ty_95 = _bindgen_ty_95::TCA_STAB;
+pub const TCA_PAD: _bindgen_ty_95 = _bindgen_ty_95::TCA_PAD;
+pub const TCA_DUMP_INVISIBLE: _bindgen_ty_95 = _bindgen_ty_95::TCA_DUMP_INVISIBLE;
+pub const TCA_CHAIN: _bindgen_ty_95 = _bindgen_ty_95::TCA_CHAIN;
+pub const TCA_HW_OFFLOAD: _bindgen_ty_95 = _bindgen_ty_95::TCA_HW_OFFLOAD;
+pub const TCA_INGRESS_BLOCK: _bindgen_ty_95 = _bindgen_ty_95::TCA_INGRESS_BLOCK;
+pub const TCA_EGRESS_BLOCK: _bindgen_ty_95 = _bindgen_ty_95::TCA_EGRESS_BLOCK;
+pub const TCA_DUMP_FLAGS: _bindgen_ty_95 = _bindgen_ty_95::TCA_DUMP_FLAGS;
+pub const __TCA_MAX: _bindgen_ty_95 = _bindgen_ty_95::__TCA_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_93 {
+pub enum _bindgen_ty_95 {
     TCA_UNSPEC = 0,
     TCA_KIND = 1,
     TCA_OPTIONS = 2,
@@ -1681,24 +1809,25 @@ pub enum _bindgen_ty_93 {
     TCA_HW_OFFLOAD = 12,
     TCA_INGRESS_BLOCK = 13,
     TCA_EGRESS_BLOCK = 14,
-    __TCA_MAX = 15,
-}
-pub const TCA_BPF_UNSPEC: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_UNSPEC;
-pub const TCA_BPF_ACT: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_ACT;
-pub const TCA_BPF_POLICE: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_POLICE;
-pub const TCA_BPF_CLASSID: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_CLASSID;
-pub const TCA_BPF_OPS_LEN: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_OPS_LEN;
-pub const TCA_BPF_OPS: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_OPS;
-pub const TCA_BPF_FD: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FD;
-pub const TCA_BPF_NAME: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_NAME;
-pub const TCA_BPF_FLAGS: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FLAGS;
-pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FLAGS_GEN;
-pub const TCA_BPF_TAG: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_TAG;
-pub const TCA_BPF_ID: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_ID;
-pub const __TCA_BPF_MAX: _bindgen_ty_149 = _bindgen_ty_149::__TCA_BPF_MAX;
+    TCA_DUMP_FLAGS = 15,
+    __TCA_MAX = 16,
+}
+pub const TCA_BPF_UNSPEC: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_UNSPEC;
+pub const TCA_BPF_ACT: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_ACT;
+pub const TCA_BPF_POLICE: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_POLICE;
+pub const TCA_BPF_CLASSID: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_CLASSID;
+pub const TCA_BPF_OPS_LEN: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_OPS_LEN;
+pub const TCA_BPF_OPS: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_OPS;
+pub const TCA_BPF_FD: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FD;
+pub const TCA_BPF_NAME: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_NAME;
+pub const TCA_BPF_FLAGS: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FLAGS;
+pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FLAGS_GEN;
+pub const TCA_BPF_TAG: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_TAG;
+pub const TCA_BPF_ID: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_ID;
+pub const __TCA_BPF_MAX: _bindgen_ty_151 = _bindgen_ty_151::__TCA_BPF_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_149 {
+pub enum _bindgen_ty_151 {
     TCA_BPF_UNSPEC = 0,
     TCA_BPF_ACT = 1,
     TCA_BPF_POLICE = 2,
diff --git a/aya/src/generated/linux_bindings_armv7.rs b/aya/src/generated/linux_bindings_armv7.rs
index a86e49f8..c4680a84 100644
--- a/aya/src/generated/linux_bindings_armv7.rs
+++ b/aya/src/generated/linux_bindings_armv7.rs
@@ -717,8 +717,9 @@ pub const BTF_KIND_VAR: ::std::os::raw::c_uint = 14;
 pub const BTF_KIND_DATASEC: ::std::os::raw::c_uint = 15;
 pub const BTF_KIND_FLOAT: ::std::os::raw::c_uint = 16;
 pub const BTF_KIND_DECL_TAG: ::std::os::raw::c_uint = 17;
-pub const NR_BTF_KINDS: ::std::os::raw::c_uint = 18;
-pub const BTF_KIND_MAX: ::std::os::raw::c_uint = 17;
+pub const BTF_KIND_TYPE_TAG: ::std::os::raw::c_uint = 18;
+pub const NR_BTF_KINDS: ::std::os::raw::c_uint = 19;
+pub const BTF_KIND_MAX: ::std::os::raw::c_uint = 18;
 pub type _bindgen_ty_37 = ::std::os::raw::c_uint;
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -825,7 +826,8 @@ pub enum perf_sw_ids {
     PERF_COUNT_SW_EMULATION_FAULTS = 8,
     PERF_COUNT_SW_DUMMY = 9,
     PERF_COUNT_SW_BPF_OUTPUT = 10,
-    PERF_COUNT_SW_MAX = 11,
+    PERF_COUNT_SW_CGROUP_SWITCHES = 11,
+    PERF_COUNT_SW_MAX = 12,
 }
 #[repr(u64)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -850,7 +852,12 @@ pub enum perf_event_sample_format {
     PERF_SAMPLE_TRANSACTION = 131072,
     PERF_SAMPLE_REGS_INTR = 262144,
     PERF_SAMPLE_PHYS_ADDR = 524288,
-    PERF_SAMPLE_MAX = 1048576,
+    PERF_SAMPLE_AUX = 1048576,
+    PERF_SAMPLE_CGROUP = 2097152,
+    PERF_SAMPLE_DATA_PAGE_SIZE = 4194304,
+    PERF_SAMPLE_CODE_PAGE_SIZE = 8388608,
+    PERF_SAMPLE_WEIGHT_STRUCT = 16777216,
+    PERF_SAMPLE_MAX = 33554432,
     __PERF_SAMPLE_CALLCHAIN_EARLY = 9223372036854775808,
 }
 #[repr(C)]
@@ -876,6 +883,9 @@ pub struct perf_event_attr {
     pub aux_watermark: __u32,
     pub sample_max_stack: __u16,
     pub __reserved_2: __u16,
+    pub aux_sample_size: __u32,
+    pub __reserved_3: __u32,
+    pub sig_data: __u64,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -1248,14 +1258,80 @@ impl perf_event_attr {
         }
     }
     #[inline]
+    pub fn cgroup(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_cgroup(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(32usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn text_poke(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(33usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_text_poke(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(33usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn build_id(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(34usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_build_id(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(34usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn inherit_thread(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(35usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_inherit_thread(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(35usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn remove_on_exec(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(36usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_remove_on_exec(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(36usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn sigtrap(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(37usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_sigtrap(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(37usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
     pub fn __reserved_1(&self) -> __u64 {
-        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 32u8) as u64) }
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(38usize, 26u8) as u64) }
     }
     #[inline]
     pub fn set___reserved_1(&mut self, val: __u64) {
         unsafe {
             let val: u64 = ::std::mem::transmute(val);
-            self._bitfield_1.set(32usize, 32u8, val as u64)
+            self._bitfield_1.set(38usize, 26u8, val as u64)
         }
     }
     #[inline]
@@ -1291,6 +1367,12 @@ impl perf_event_attr {
         ksymbol: __u64,
         bpf_event: __u64,
         aux_output: __u64,
+        cgroup: __u64,
+        text_poke: __u64,
+        build_id: __u64,
+        inherit_thread: __u64,
+        remove_on_exec: __u64,
+        sigtrap: __u64,
         __reserved_1: __u64,
     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
@@ -1420,7 +1502,31 @@ impl perf_event_attr {
             let aux_output: u64 = unsafe { ::std::mem::transmute(aux_output) };
             aux_output as u64
         });
-        __bindgen_bitfield_unit.set(32usize, 32u8, {
+        __bindgen_bitfield_unit.set(32usize, 1u8, {
+            let cgroup: u64 = unsafe { ::std::mem::transmute(cgroup) };
+            cgroup as u64
+        });
+        __bindgen_bitfield_unit.set(33usize, 1u8, {
+            let text_poke: u64 = unsafe { ::std::mem::transmute(text_poke) };
+            text_poke as u64
+        });
+        __bindgen_bitfield_unit.set(34usize, 1u8, {
+            let build_id: u64 = unsafe { ::std::mem::transmute(build_id) };
+            build_id as u64
+        });
+        __bindgen_bitfield_unit.set(35usize, 1u8, {
+            let inherit_thread: u64 = unsafe { ::std::mem::transmute(inherit_thread) };
+            inherit_thread as u64
+        });
+        __bindgen_bitfield_unit.set(36usize, 1u8, {
+            let remove_on_exec: u64 = unsafe { ::std::mem::transmute(remove_on_exec) };
+            remove_on_exec as u64
+        });
+        __bindgen_bitfield_unit.set(37usize, 1u8, {
+            let sigtrap: u64 = unsafe { ::std::mem::transmute(sigtrap) };
+            sigtrap as u64
+        });
+        __bindgen_bitfield_unit.set(38usize, 26u8, {
             let __reserved_1: u64 = unsafe { ::std::mem::transmute(__reserved_1) };
             __reserved_1 as u64
         });
@@ -1444,7 +1550,10 @@ pub struct perf_event_mmap_page {
     pub time_offset: __u64,
     pub time_zero: __u64,
     pub size: __u32,
-    pub __reserved: [__u8; 948usize],
+    pub __reserved_1: __u32,
+    pub time_cycles: __u64,
+    pub time_mask: __u64,
+    pub __reserved: [__u8; 928usize],
     pub data_head: __u64,
     pub data_tail: __u64,
     pub data_offset: __u64,
@@ -1524,14 +1633,25 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
         }
     }
     #[inline]
+    pub fn cap_user_time_short(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_cap_user_time_short(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(5usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
     pub fn cap_____res(&self) -> __u64 {
-        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 59u8) as u64) }
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 58u8) as u64) }
     }
     #[inline]
     pub fn set_cap_____res(&mut self, val: __u64) {
         unsafe {
             let val: u64 = ::std::mem::transmute(val);
-            self._bitfield_1.set(5usize, 59u8, val as u64)
+            self._bitfield_1.set(6usize, 58u8, val as u64)
         }
     }
     #[inline]
@@ -1541,6 +1661,7 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
         cap_user_rdpmc: __u64,
         cap_user_time: __u64,
         cap_user_time_zero: __u64,
+        cap_user_time_short: __u64,
         cap_____res: __u64,
     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
@@ -1565,7 +1686,11 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
             let cap_user_time_zero: u64 = unsafe { ::std::mem::transmute(cap_user_time_zero) };
             cap_user_time_zero as u64
         });
-        __bindgen_bitfield_unit.set(5usize, 59u8, {
+        __bindgen_bitfield_unit.set(5usize, 1u8, {
+            let cap_user_time_short: u64 = unsafe { ::std::mem::transmute(cap_user_time_short) };
+            cap_user_time_short as u64
+        });
+        __bindgen_bitfield_unit.set(6usize, 58u8, {
             let cap_____res: u64 = unsafe { ::std::mem::transmute(cap_____res) };
             cap_____res as u64
         });
@@ -1600,7 +1725,9 @@ pub enum perf_event_type {
     PERF_RECORD_NAMESPACES = 16,
     PERF_RECORD_KSYMBOL = 17,
     PERF_RECORD_BPF_EVENT = 18,
-    PERF_RECORD_MAX = 19,
+    PERF_RECORD_CGROUP = 19,
+    PERF_RECORD_TEXT_POKE = 20,
+    PERF_RECORD_MAX = 21,
 }
 pub const IFLA_XDP_UNSPEC: _bindgen_ty_81 = _bindgen_ty_81::IFLA_XDP_UNSPEC;
 pub const IFLA_XDP_FD: _bindgen_ty_81 = _bindgen_ty_81::IFLA_XDP_FD;
@@ -1647,25 +1774,26 @@ pub struct tcmsg {
     pub tcm_parent: __u32,
     pub tcm_info: __u32,
 }
-pub const TCA_UNSPEC: _bindgen_ty_93 = _bindgen_ty_93::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_93 = _bindgen_ty_93::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_93 = _bindgen_ty_93::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_93 = _bindgen_ty_93::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_93 = _bindgen_ty_93::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_93 = _bindgen_ty_93::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_93 = _bindgen_ty_93::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_93 = _bindgen_ty_93::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_93 = _bindgen_ty_93::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_93 = _bindgen_ty_93::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_93 = _bindgen_ty_93::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_93 = _bindgen_ty_93::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_93 = _bindgen_ty_93::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_93 = _bindgen_ty_93::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_93 = _bindgen_ty_93::TCA_EGRESS_BLOCK;
-pub const __TCA_MAX: _bindgen_ty_93 = _bindgen_ty_93::__TCA_MAX;
+pub const TCA_UNSPEC: _bindgen_ty_95 = _bindgen_ty_95::TCA_UNSPEC;
+pub const TCA_KIND: _bindgen_ty_95 = _bindgen_ty_95::TCA_KIND;
+pub const TCA_OPTIONS: _bindgen_ty_95 = _bindgen_ty_95::TCA_OPTIONS;
+pub const TCA_STATS: _bindgen_ty_95 = _bindgen_ty_95::TCA_STATS;
+pub const TCA_XSTATS: _bindgen_ty_95 = _bindgen_ty_95::TCA_XSTATS;
+pub const TCA_RATE: _bindgen_ty_95 = _bindgen_ty_95::TCA_RATE;
+pub const TCA_FCNT: _bindgen_ty_95 = _bindgen_ty_95::TCA_FCNT;
+pub const TCA_STATS2: _bindgen_ty_95 = _bindgen_ty_95::TCA_STATS2;
+pub const TCA_STAB: _bindgen_ty_95 = _bindgen_ty_95::TCA_STAB;
+pub const TCA_PAD: _bindgen_ty_95 = _bindgen_ty_95::TCA_PAD;
+pub const TCA_DUMP_INVISIBLE: _bindgen_ty_95 = _bindgen_ty_95::TCA_DUMP_INVISIBLE;
+pub const TCA_CHAIN: _bindgen_ty_95 = _bindgen_ty_95::TCA_CHAIN;
+pub const TCA_HW_OFFLOAD: _bindgen_ty_95 = _bindgen_ty_95::TCA_HW_OFFLOAD;
+pub const TCA_INGRESS_BLOCK: _bindgen_ty_95 = _bindgen_ty_95::TCA_INGRESS_BLOCK;
+pub const TCA_EGRESS_BLOCK: _bindgen_ty_95 = _bindgen_ty_95::TCA_EGRESS_BLOCK;
+pub const TCA_DUMP_FLAGS: _bindgen_ty_95 = _bindgen_ty_95::TCA_DUMP_FLAGS;
+pub const __TCA_MAX: _bindgen_ty_95 = _bindgen_ty_95::__TCA_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_93 {
+pub enum _bindgen_ty_95 {
     TCA_UNSPEC = 0,
     TCA_KIND = 1,
     TCA_OPTIONS = 2,
@@ -1681,24 +1809,25 @@ pub enum _bindgen_ty_93 {
     TCA_HW_OFFLOAD = 12,
     TCA_INGRESS_BLOCK = 13,
     TCA_EGRESS_BLOCK = 14,
-    __TCA_MAX = 15,
-}
-pub const TCA_BPF_UNSPEC: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_UNSPEC;
-pub const TCA_BPF_ACT: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_ACT;
-pub const TCA_BPF_POLICE: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_POLICE;
-pub const TCA_BPF_CLASSID: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_CLASSID;
-pub const TCA_BPF_OPS_LEN: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_OPS_LEN;
-pub const TCA_BPF_OPS: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_OPS;
-pub const TCA_BPF_FD: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FD;
-pub const TCA_BPF_NAME: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_NAME;
-pub const TCA_BPF_FLAGS: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FLAGS;
-pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FLAGS_GEN;
-pub const TCA_BPF_TAG: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_TAG;
-pub const TCA_BPF_ID: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_ID;
-pub const __TCA_BPF_MAX: _bindgen_ty_149 = _bindgen_ty_149::__TCA_BPF_MAX;
+    TCA_DUMP_FLAGS = 15,
+    __TCA_MAX = 16,
+}
+pub const TCA_BPF_UNSPEC: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_UNSPEC;
+pub const TCA_BPF_ACT: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_ACT;
+pub const TCA_BPF_POLICE: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_POLICE;
+pub const TCA_BPF_CLASSID: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_CLASSID;
+pub const TCA_BPF_OPS_LEN: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_OPS_LEN;
+pub const TCA_BPF_OPS: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_OPS;
+pub const TCA_BPF_FD: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FD;
+pub const TCA_BPF_NAME: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_NAME;
+pub const TCA_BPF_FLAGS: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FLAGS;
+pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FLAGS_GEN;
+pub const TCA_BPF_TAG: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_TAG;
+pub const TCA_BPF_ID: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_ID;
+pub const __TCA_BPF_MAX: _bindgen_ty_151 = _bindgen_ty_151::__TCA_BPF_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_149 {
+pub enum _bindgen_ty_151 {
     TCA_BPF_UNSPEC = 0,
     TCA_BPF_ACT = 1,
     TCA_BPF_POLICE = 2,
diff --git a/aya/src/generated/linux_bindings_x86_64.rs b/aya/src/generated/linux_bindings_x86_64.rs
index a86e49f8..c4680a84 100644
--- a/aya/src/generated/linux_bindings_x86_64.rs
+++ b/aya/src/generated/linux_bindings_x86_64.rs
@@ -717,8 +717,9 @@ pub const BTF_KIND_VAR: ::std::os::raw::c_uint = 14;
 pub const BTF_KIND_DATASEC: ::std::os::raw::c_uint = 15;
 pub const BTF_KIND_FLOAT: ::std::os::raw::c_uint = 16;
 pub const BTF_KIND_DECL_TAG: ::std::os::raw::c_uint = 17;
-pub const NR_BTF_KINDS: ::std::os::raw::c_uint = 18;
-pub const BTF_KIND_MAX: ::std::os::raw::c_uint = 17;
+pub const BTF_KIND_TYPE_TAG: ::std::os::raw::c_uint = 18;
+pub const NR_BTF_KINDS: ::std::os::raw::c_uint = 19;
+pub const BTF_KIND_MAX: ::std::os::raw::c_uint = 18;
 pub type _bindgen_ty_37 = ::std::os::raw::c_uint;
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -825,7 +826,8 @@ pub enum perf_sw_ids {
     PERF_COUNT_SW_EMULATION_FAULTS = 8,
     PERF_COUNT_SW_DUMMY = 9,
     PERF_COUNT_SW_BPF_OUTPUT = 10,
-    PERF_COUNT_SW_MAX = 11,
+    PERF_COUNT_SW_CGROUP_SWITCHES = 11,
+    PERF_COUNT_SW_MAX = 12,
 }
 #[repr(u64)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -850,7 +852,12 @@ pub enum perf_event_sample_format {
     PERF_SAMPLE_TRANSACTION = 131072,
     PERF_SAMPLE_REGS_INTR = 262144,
     PERF_SAMPLE_PHYS_ADDR = 524288,
-    PERF_SAMPLE_MAX = 1048576,
+    PERF_SAMPLE_AUX = 1048576,
+    PERF_SAMPLE_CGROUP = 2097152,
+    PERF_SAMPLE_DATA_PAGE_SIZE = 4194304,
+    PERF_SAMPLE_CODE_PAGE_SIZE = 8388608,
+    PERF_SAMPLE_WEIGHT_STRUCT = 16777216,
+    PERF_SAMPLE_MAX = 33554432,
     __PERF_SAMPLE_CALLCHAIN_EARLY = 9223372036854775808,
 }
 #[repr(C)]
@@ -876,6 +883,9 @@ pub struct perf_event_attr {
     pub aux_watermark: __u32,
     pub sample_max_stack: __u16,
     pub __reserved_2: __u16,
+    pub aux_sample_size: __u32,
+    pub __reserved_3: __u32,
+    pub sig_data: __u64,
 }
 #[repr(C)]
 #[derive(Copy, Clone)]
@@ -1248,14 +1258,80 @@ impl perf_event_attr {
         }
     }
     #[inline]
+    pub fn cgroup(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_cgroup(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(32usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn text_poke(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(33usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_text_poke(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(33usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn build_id(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(34usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_build_id(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(34usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn inherit_thread(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(35usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_inherit_thread(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(35usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn remove_on_exec(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(36usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_remove_on_exec(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(36usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn sigtrap(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(37usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_sigtrap(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(37usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
     pub fn __reserved_1(&self) -> __u64 {
-        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 32u8) as u64) }
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(38usize, 26u8) as u64) }
     }
     #[inline]
     pub fn set___reserved_1(&mut self, val: __u64) {
         unsafe {
             let val: u64 = ::std::mem::transmute(val);
-            self._bitfield_1.set(32usize, 32u8, val as u64)
+            self._bitfield_1.set(38usize, 26u8, val as u64)
         }
     }
     #[inline]
@@ -1291,6 +1367,12 @@ impl perf_event_attr {
         ksymbol: __u64,
         bpf_event: __u64,
         aux_output: __u64,
+        cgroup: __u64,
+        text_poke: __u64,
+        build_id: __u64,
+        inherit_thread: __u64,
+        remove_on_exec: __u64,
+        sigtrap: __u64,
         __reserved_1: __u64,
     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
@@ -1420,7 +1502,31 @@ impl perf_event_attr {
             let aux_output: u64 = unsafe { ::std::mem::transmute(aux_output) };
             aux_output as u64
         });
-        __bindgen_bitfield_unit.set(32usize, 32u8, {
+        __bindgen_bitfield_unit.set(32usize, 1u8, {
+            let cgroup: u64 = unsafe { ::std::mem::transmute(cgroup) };
+            cgroup as u64
+        });
+        __bindgen_bitfield_unit.set(33usize, 1u8, {
+            let text_poke: u64 = unsafe { ::std::mem::transmute(text_poke) };
+            text_poke as u64
+        });
+        __bindgen_bitfield_unit.set(34usize, 1u8, {
+            let build_id: u64 = unsafe { ::std::mem::transmute(build_id) };
+            build_id as u64
+        });
+        __bindgen_bitfield_unit.set(35usize, 1u8, {
+            let inherit_thread: u64 = unsafe { ::std::mem::transmute(inherit_thread) };
+            inherit_thread as u64
+        });
+        __bindgen_bitfield_unit.set(36usize, 1u8, {
+            let remove_on_exec: u64 = unsafe { ::std::mem::transmute(remove_on_exec) };
+            remove_on_exec as u64
+        });
+        __bindgen_bitfield_unit.set(37usize, 1u8, {
+            let sigtrap: u64 = unsafe { ::std::mem::transmute(sigtrap) };
+            sigtrap as u64
+        });
+        __bindgen_bitfield_unit.set(38usize, 26u8, {
             let __reserved_1: u64 = unsafe { ::std::mem::transmute(__reserved_1) };
             __reserved_1 as u64
         });
@@ -1444,7 +1550,10 @@ pub struct perf_event_mmap_page {
     pub time_offset: __u64,
     pub time_zero: __u64,
     pub size: __u32,
-    pub __reserved: [__u8; 948usize],
+    pub __reserved_1: __u32,
+    pub time_cycles: __u64,
+    pub time_mask: __u64,
+    pub __reserved: [__u8; 928usize],
     pub data_head: __u64,
     pub data_tail: __u64,
     pub data_offset: __u64,
@@ -1524,14 +1633,25 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
         }
     }
     #[inline]
+    pub fn cap_user_time_short(&self) -> __u64 {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u64) }
+    }
+    #[inline]
+    pub fn set_cap_user_time_short(&mut self, val: __u64) {
+        unsafe {
+            let val: u64 = ::std::mem::transmute(val);
+            self._bitfield_1.set(5usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
     pub fn cap_____res(&self) -> __u64 {
-        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 59u8) as u64) }
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 58u8) as u64) }
     }
     #[inline]
     pub fn set_cap_____res(&mut self, val: __u64) {
         unsafe {
             let val: u64 = ::std::mem::transmute(val);
-            self._bitfield_1.set(5usize, 59u8, val as u64)
+            self._bitfield_1.set(6usize, 58u8, val as u64)
         }
     }
     #[inline]
@@ -1541,6 +1661,7 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
         cap_user_rdpmc: __u64,
         cap_user_time: __u64,
         cap_user_time_zero: __u64,
+        cap_user_time_short: __u64,
         cap_____res: __u64,
     ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
         let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
@@ -1565,7 +1686,11 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
             let cap_user_time_zero: u64 = unsafe { ::std::mem::transmute(cap_user_time_zero) };
             cap_user_time_zero as u64
         });
-        __bindgen_bitfield_unit.set(5usize, 59u8, {
+        __bindgen_bitfield_unit.set(5usize, 1u8, {
+            let cap_user_time_short: u64 = unsafe { ::std::mem::transmute(cap_user_time_short) };
+            cap_user_time_short as u64
+        });
+        __bindgen_bitfield_unit.set(6usize, 58u8, {
             let cap_____res: u64 = unsafe { ::std::mem::transmute(cap_____res) };
             cap_____res as u64
         });
@@ -1600,7 +1725,9 @@ pub enum perf_event_type {
     PERF_RECORD_NAMESPACES = 16,
     PERF_RECORD_KSYMBOL = 17,
     PERF_RECORD_BPF_EVENT = 18,
-    PERF_RECORD_MAX = 19,
+    PERF_RECORD_CGROUP = 19,
+    PERF_RECORD_TEXT_POKE = 20,
+    PERF_RECORD_MAX = 21,
 }
 pub const IFLA_XDP_UNSPEC: _bindgen_ty_81 = _bindgen_ty_81::IFLA_XDP_UNSPEC;
 pub const IFLA_XDP_FD: _bindgen_ty_81 = _bindgen_ty_81::IFLA_XDP_FD;
@@ -1647,25 +1774,26 @@ pub struct tcmsg {
     pub tcm_parent: __u32,
     pub tcm_info: __u32,
 }
-pub const TCA_UNSPEC: _bindgen_ty_93 = _bindgen_ty_93::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_93 = _bindgen_ty_93::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_93 = _bindgen_ty_93::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_93 = _bindgen_ty_93::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_93 = _bindgen_ty_93::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_93 = _bindgen_ty_93::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_93 = _bindgen_ty_93::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_93 = _bindgen_ty_93::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_93 = _bindgen_ty_93::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_93 = _bindgen_ty_93::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_93 = _bindgen_ty_93::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_93 = _bindgen_ty_93::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_93 = _bindgen_ty_93::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_93 = _bindgen_ty_93::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_93 = _bindgen_ty_93::TCA_EGRESS_BLOCK;
-pub const __TCA_MAX: _bindgen_ty_93 = _bindgen_ty_93::__TCA_MAX;
+pub const TCA_UNSPEC: _bindgen_ty_95 = _bindgen_ty_95::TCA_UNSPEC;
+pub const TCA_KIND: _bindgen_ty_95 = _bindgen_ty_95::TCA_KIND;
+pub const TCA_OPTIONS: _bindgen_ty_95 = _bindgen_ty_95::TCA_OPTIONS;
+pub const TCA_STATS: _bindgen_ty_95 = _bindgen_ty_95::TCA_STATS;
+pub const TCA_XSTATS: _bindgen_ty_95 = _bindgen_ty_95::TCA_XSTATS;
+pub const TCA_RATE: _bindgen_ty_95 = _bindgen_ty_95::TCA_RATE;
+pub const TCA_FCNT: _bindgen_ty_95 = _bindgen_ty_95::TCA_FCNT;
+pub const TCA_STATS2: _bindgen_ty_95 = _bindgen_ty_95::TCA_STATS2;
+pub const TCA_STAB: _bindgen_ty_95 = _bindgen_ty_95::TCA_STAB;
+pub const TCA_PAD: _bindgen_ty_95 = _bindgen_ty_95::TCA_PAD;
+pub const TCA_DUMP_INVISIBLE: _bindgen_ty_95 = _bindgen_ty_95::TCA_DUMP_INVISIBLE;
+pub const TCA_CHAIN: _bindgen_ty_95 = _bindgen_ty_95::TCA_CHAIN;
+pub const TCA_HW_OFFLOAD: _bindgen_ty_95 = _bindgen_ty_95::TCA_HW_OFFLOAD;
+pub const TCA_INGRESS_BLOCK: _bindgen_ty_95 = _bindgen_ty_95::TCA_INGRESS_BLOCK;
+pub const TCA_EGRESS_BLOCK: _bindgen_ty_95 = _bindgen_ty_95::TCA_EGRESS_BLOCK;
+pub const TCA_DUMP_FLAGS: _bindgen_ty_95 = _bindgen_ty_95::TCA_DUMP_FLAGS;
+pub const __TCA_MAX: _bindgen_ty_95 = _bindgen_ty_95::__TCA_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_93 {
+pub enum _bindgen_ty_95 {
     TCA_UNSPEC = 0,
     TCA_KIND = 1,
     TCA_OPTIONS = 2,
@@ -1681,24 +1809,25 @@ pub enum _bindgen_ty_93 {
     TCA_HW_OFFLOAD = 12,
     TCA_INGRESS_BLOCK = 13,
     TCA_EGRESS_BLOCK = 14,
-    __TCA_MAX = 15,
-}
-pub const TCA_BPF_UNSPEC: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_UNSPEC;
-pub const TCA_BPF_ACT: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_ACT;
-pub const TCA_BPF_POLICE: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_POLICE;
-pub const TCA_BPF_CLASSID: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_CLASSID;
-pub const TCA_BPF_OPS_LEN: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_OPS_LEN;
-pub const TCA_BPF_OPS: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_OPS;
-pub const TCA_BPF_FD: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FD;
-pub const TCA_BPF_NAME: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_NAME;
-pub const TCA_BPF_FLAGS: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FLAGS;
-pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_FLAGS_GEN;
-pub const TCA_BPF_TAG: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_TAG;
-pub const TCA_BPF_ID: _bindgen_ty_149 = _bindgen_ty_149::TCA_BPF_ID;
-pub const __TCA_BPF_MAX: _bindgen_ty_149 = _bindgen_ty_149::__TCA_BPF_MAX;
+    TCA_DUMP_FLAGS = 15,
+    __TCA_MAX = 16,
+}
+pub const TCA_BPF_UNSPEC: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_UNSPEC;
+pub const TCA_BPF_ACT: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_ACT;
+pub const TCA_BPF_POLICE: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_POLICE;
+pub const TCA_BPF_CLASSID: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_CLASSID;
+pub const TCA_BPF_OPS_LEN: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_OPS_LEN;
+pub const TCA_BPF_OPS: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_OPS;
+pub const TCA_BPF_FD: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FD;
+pub const TCA_BPF_NAME: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_NAME;
+pub const TCA_BPF_FLAGS: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FLAGS;
+pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_FLAGS_GEN;
+pub const TCA_BPF_TAG: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_TAG;
+pub const TCA_BPF_ID: _bindgen_ty_151 = _bindgen_ty_151::TCA_BPF_ID;
+pub const __TCA_BPF_MAX: _bindgen_ty_151 = _bindgen_ty_151::__TCA_BPF_MAX;
 #[repr(u32)]
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_149 {
+pub enum _bindgen_ty_151 {
     TCA_BPF_UNSPEC = 0,
     TCA_BPF_ACT = 1,
     TCA_BPF_POLICE = 2,
diff --git a/bpf/aya-bpf-bindings/src/aarch64/bindings.rs b/bpf/aya-bpf-bindings/src/aarch64/bindings.rs
index fc1f25e3..8aad4181 100644
--- a/bpf/aya-bpf-bindings/src/aarch64/bindings.rs
+++ b/bpf/aya-bpf-bindings/src/aarch64/bindings.rs
@@ -228,11 +228,10 @@ pub const SO_TIMESTAMPING_NEW: u32 = 65;
 pub const SO_RCVTIMEO_NEW: u32 = 66;
 pub const SO_SNDTIMEO_NEW: u32 = 67;
 pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 20;
-pub const SO_SNDTIMEO: u32 = 21;
+pub const SO_PREFER_BUSY_POLL: u32 = 69;
+pub const SO_BUSY_POLL_BUDGET: u32 = 70;
+pub const SO_NETNS_COOKIE: u32 = 71;
+pub const SO_BUF_LOCK: u32 = 72;
 pub const TC_ACT_UNSPEC: i32 = -1;
 pub const TC_ACT_OK: u32 = 0;
 pub const TC_ACT_RECLASSIFY: u32 = 1;
@@ -1084,11 +1083,28 @@ pub struct btf_ptr {
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
-pub struct user_pt_regs {
-    pub regs: [__u64; 31usize],
-    pub sp: __u64,
-    pub pc: __u64,
-    pub pstate: __u64,
+pub struct pt_regs {
+    pub r15: ::aya_bpf_cty::c_ulong,
+    pub r14: ::aya_bpf_cty::c_ulong,
+    pub r13: ::aya_bpf_cty::c_ulong,
+    pub r12: ::aya_bpf_cty::c_ulong,
+    pub rbp: ::aya_bpf_cty::c_ulong,
+    pub rbx: ::aya_bpf_cty::c_ulong,
+    pub r11: ::aya_bpf_cty::c_ulong,
+    pub r10: ::aya_bpf_cty::c_ulong,
+    pub r9: ::aya_bpf_cty::c_ulong,
+    pub r8: ::aya_bpf_cty::c_ulong,
+    pub rax: ::aya_bpf_cty::c_ulong,
+    pub rcx: ::aya_bpf_cty::c_ulong,
+    pub rdx: ::aya_bpf_cty::c_ulong,
+    pub rsi: ::aya_bpf_cty::c_ulong,
+    pub rdi: ::aya_bpf_cty::c_ulong,
+    pub orig_rax: ::aya_bpf_cty::c_ulong,
+    pub rip: ::aya_bpf_cty::c_ulong,
+    pub cs: ::aya_bpf_cty::c_ulong,
+    pub eflags: ::aya_bpf_cty::c_ulong,
+    pub rsp: ::aya_bpf_cty::c_ulong,
+    pub ss: ::aya_bpf_cty::c_ulong,
 }
 pub type sa_family_t = ::aya_bpf_cty::c_ushort;
 #[repr(C)]
@@ -1109,11 +1125,6 @@ pub struct linux_binprm {
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
-pub struct pt_regs {
-    _unused: [u8; 0],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
 pub struct tcphdr {
     _unused: [u8; 0],
 }
diff --git a/bpf/aya-bpf-bindings/src/aarch64/getters.rs b/bpf/aya-bpf-bindings/src/aarch64/getters.rs
index e3f26626..ef78ab3b 100644
--- a/bpf/aya-bpf-bindings/src/aarch64/getters.rs
+++ b/bpf/aya-bpf-bindings/src/aarch64/getters.rs
@@ -1064,18 +1064,69 @@ impl btf_ptr {
         unsafe { crate::bpf_probe_read(&self.flags) }.ok()
     }
 }
-impl user_pt_regs {
-    pub fn regs(&self) -> Option<[__u64; 31usize]> {
-        unsafe { crate::bpf_probe_read(&self.regs) }.ok()
+impl pt_regs {
+    pub fn r15(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r15) }.ok()
     }
-    pub fn sp(&self) -> Option<__u64> {
-        unsafe { crate::bpf_probe_read(&self.sp) }.ok()
+    pub fn r14(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r14) }.ok()
     }
-    pub fn pc(&self) -> Option<__u64> {
-        unsafe { crate::bpf_probe_read(&self.pc) }.ok()
+    pub fn r13(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r13) }.ok()
     }
-    pub fn pstate(&self) -> Option<__u64> {
-        unsafe { crate::bpf_probe_read(&self.pstate) }.ok()
+    pub fn r12(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r12) }.ok()
+    }
+    pub fn rbp(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rbp) }.ok()
+    }
+    pub fn rbx(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rbx) }.ok()
+    }
+    pub fn r11(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r11) }.ok()
+    }
+    pub fn r10(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r10) }.ok()
+    }
+    pub fn r9(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r9) }.ok()
+    }
+    pub fn r8(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r8) }.ok()
+    }
+    pub fn rax(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rax) }.ok()
+    }
+    pub fn rcx(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rcx) }.ok()
+    }
+    pub fn rdx(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rdx) }.ok()
+    }
+    pub fn rsi(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rsi) }.ok()
+    }
+    pub fn rdi(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rdi) }.ok()
+    }
+    pub fn orig_rax(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.orig_rax) }.ok()
+    }
+    pub fn rip(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rip) }.ok()
+    }
+    pub fn cs(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.cs) }.ok()
+    }
+    pub fn eflags(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.eflags) }.ok()
+    }
+    pub fn rsp(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rsp) }.ok()
+    }
+    pub fn ss(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.ss) }.ok()
     }
 }
 impl sockaddr {
@@ -1088,7 +1139,6 @@ impl sockaddr {
 }
 impl bpf_perf_event_data {}
 impl linux_binprm {}
-impl pt_regs {}
 impl tcphdr {}
 impl seq_file {}
 impl tcp6_sock {}
diff --git a/bpf/aya-bpf-bindings/src/aarch64/helpers.rs b/bpf/aya-bpf-bindings/src/aarch64/helpers.rs
index 57b1a4c4..78389469 100644
--- a/bpf/aya-bpf-bindings/src/aarch64/helpers.rs
+++ b/bpf/aya-bpf-bindings/src/aarch64/helpers.rs
@@ -1809,3 +1809,19 @@ pub unsafe fn bpf_kallsyms_lookup_name(
     ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(179usize);
     fun(name, name_sz, flags, res)
 }
+pub unsafe fn bpf_find_vma(
+    task: *mut task_struct,
+    addr: __u64,
+    callback_fn: *mut ::aya_bpf_cty::c_void,
+    callback_ctx: *mut ::aya_bpf_cty::c_void,
+    flags: __u64,
+) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(
+        task: *mut task_struct,
+        addr: __u64,
+        callback_fn: *mut ::aya_bpf_cty::c_void,
+        callback_ctx: *mut ::aya_bpf_cty::c_void,
+        flags: __u64,
+    ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(180usize);
+    fun(task, addr, callback_fn, callback_ctx, flags)
+}
diff --git a/bpf/aya-bpf-bindings/src/armv7/bindings.rs b/bpf/aya-bpf-bindings/src/armv7/bindings.rs
index 1ac01794..c1e3ef1e 100644
--- a/bpf/aya-bpf-bindings/src/armv7/bindings.rs
+++ b/bpf/aya-bpf-bindings/src/armv7/bindings.rs
@@ -228,6 +228,10 @@ pub const SO_TIMESTAMPING_NEW: u32 = 65;
 pub const SO_RCVTIMEO_NEW: u32 = 66;
 pub const SO_SNDTIMEO_NEW: u32 = 67;
 pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
+pub const SO_PREFER_BUSY_POLL: u32 = 69;
+pub const SO_BUSY_POLL_BUDGET: u32 = 70;
+pub const SO_NETNS_COOKIE: u32 = 71;
+pub const SO_BUF_LOCK: u32 = 72;
 pub const TC_ACT_UNSPEC: i32 = -1;
 pub const TC_ACT_OK: u32 = 0;
 pub const TC_ACT_RECLASSIFY: u32 = 1;
@@ -1093,7 +1097,27 @@ pub struct btf_ptr {
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct pt_regs {
-    pub uregs: [::aya_bpf_cty::c_long; 18usize],
+    pub r15: ::aya_bpf_cty::c_ulong,
+    pub r14: ::aya_bpf_cty::c_ulong,
+    pub r13: ::aya_bpf_cty::c_ulong,
+    pub r12: ::aya_bpf_cty::c_ulong,
+    pub rbp: ::aya_bpf_cty::c_ulong,
+    pub rbx: ::aya_bpf_cty::c_ulong,
+    pub r11: ::aya_bpf_cty::c_ulong,
+    pub r10: ::aya_bpf_cty::c_ulong,
+    pub r9: ::aya_bpf_cty::c_ulong,
+    pub r8: ::aya_bpf_cty::c_ulong,
+    pub rax: ::aya_bpf_cty::c_ulong,
+    pub rcx: ::aya_bpf_cty::c_ulong,
+    pub rdx: ::aya_bpf_cty::c_ulong,
+    pub rsi: ::aya_bpf_cty::c_ulong,
+    pub rdi: ::aya_bpf_cty::c_ulong,
+    pub orig_rax: ::aya_bpf_cty::c_ulong,
+    pub rip: ::aya_bpf_cty::c_ulong,
+    pub cs: ::aya_bpf_cty::c_ulong,
+    pub eflags: ::aya_bpf_cty::c_ulong,
+    pub rsp: ::aya_bpf_cty::c_ulong,
+    pub ss: ::aya_bpf_cty::c_ulong,
 }
 pub type sa_family_t = ::aya_bpf_cty::c_ushort;
 #[repr(C)]
diff --git a/bpf/aya-bpf-bindings/src/armv7/getters.rs b/bpf/aya-bpf-bindings/src/armv7/getters.rs
index ca7f1c89..ef78ab3b 100644
--- a/bpf/aya-bpf-bindings/src/armv7/getters.rs
+++ b/bpf/aya-bpf-bindings/src/armv7/getters.rs
@@ -1065,8 +1065,68 @@ impl btf_ptr {
     }
 }
 impl pt_regs {
-    pub fn uregs(&self) -> Option<[::aya_bpf_cty::c_long; 18usize]> {
-        unsafe { crate::bpf_probe_read(&self.uregs) }.ok()
+    pub fn r15(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r15) }.ok()
+    }
+    pub fn r14(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r14) }.ok()
+    }
+    pub fn r13(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r13) }.ok()
+    }
+    pub fn r12(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r12) }.ok()
+    }
+    pub fn rbp(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rbp) }.ok()
+    }
+    pub fn rbx(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rbx) }.ok()
+    }
+    pub fn r11(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r11) }.ok()
+    }
+    pub fn r10(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r10) }.ok()
+    }
+    pub fn r9(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r9) }.ok()
+    }
+    pub fn r8(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.r8) }.ok()
+    }
+    pub fn rax(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rax) }.ok()
+    }
+    pub fn rcx(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rcx) }.ok()
+    }
+    pub fn rdx(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rdx) }.ok()
+    }
+    pub fn rsi(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rsi) }.ok()
+    }
+    pub fn rdi(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rdi) }.ok()
+    }
+    pub fn orig_rax(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.orig_rax) }.ok()
+    }
+    pub fn rip(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rip) }.ok()
+    }
+    pub fn cs(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.cs) }.ok()
+    }
+    pub fn eflags(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.eflags) }.ok()
+    }
+    pub fn rsp(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.rsp) }.ok()
+    }
+    pub fn ss(&self) -> Option<::aya_bpf_cty::c_ulong> {
+        unsafe { crate::bpf_probe_read(&self.ss) }.ok()
     }
 }
 impl sockaddr {
diff --git a/bpf/aya-bpf-bindings/src/armv7/helpers.rs b/bpf/aya-bpf-bindings/src/armv7/helpers.rs
index 57b1a4c4..78389469 100644
--- a/bpf/aya-bpf-bindings/src/armv7/helpers.rs
+++ b/bpf/aya-bpf-bindings/src/armv7/helpers.rs
@@ -1809,3 +1809,19 @@ pub unsafe fn bpf_kallsyms_lookup_name(
     ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(179usize);
     fun(name, name_sz, flags, res)
 }
+pub unsafe fn bpf_find_vma(
+    task: *mut task_struct,
+    addr: __u64,
+    callback_fn: *mut ::aya_bpf_cty::c_void,
+    callback_ctx: *mut ::aya_bpf_cty::c_void,
+    flags: __u64,
+) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(
+        task: *mut task_struct,
+        addr: __u64,
+        callback_fn: *mut ::aya_bpf_cty::c_void,
+        callback_ctx: *mut ::aya_bpf_cty::c_void,
+        flags: __u64,
+    ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(180usize);
+    fun(task, addr, callback_fn, callback_ctx, flags)
+}
diff --git a/bpf/aya-bpf-bindings/src/x86_64/bindings.rs b/bpf/aya-bpf-bindings/src/x86_64/bindings.rs
index 974b0df9..a7b18605 100644
--- a/bpf/aya-bpf-bindings/src/x86_64/bindings.rs
+++ b/bpf/aya-bpf-bindings/src/x86_64/bindings.rs
@@ -228,6 +228,10 @@ pub const SO_TIMESTAMPING_NEW: u32 = 65;
 pub const SO_RCVTIMEO_NEW: u32 = 66;
 pub const SO_SNDTIMEO_NEW: u32 = 67;
 pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
+pub const SO_PREFER_BUSY_POLL: u32 = 69;
+pub const SO_BUSY_POLL_BUDGET: u32 = 70;
+pub const SO_NETNS_COOKIE: u32 = 71;
+pub const SO_BUF_LOCK: u32 = 72;
 pub const SO_TIMESTAMP: u32 = 29;
 pub const SO_TIMESTAMPNS: u32 = 35;
 pub const SO_TIMESTAMPING: u32 = 37;
diff --git a/bpf/aya-bpf-bindings/src/x86_64/helpers.rs b/bpf/aya-bpf-bindings/src/x86_64/helpers.rs
index 57b1a4c4..78389469 100644
--- a/bpf/aya-bpf-bindings/src/x86_64/helpers.rs
+++ b/bpf/aya-bpf-bindings/src/x86_64/helpers.rs
@@ -1809,3 +1809,19 @@ pub unsafe fn bpf_kallsyms_lookup_name(
     ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(179usize);
     fun(name, name_sz, flags, res)
 }
+pub unsafe fn bpf_find_vma(
+    task: *mut task_struct,
+    addr: __u64,
+    callback_fn: *mut ::aya_bpf_cty::c_void,
+    callback_ctx: *mut ::aya_bpf_cty::c_void,
+    flags: __u64,
+) -> ::aya_bpf_cty::c_long {
+    let fun: unsafe extern "C" fn(
+        task: *mut task_struct,
+        addr: __u64,
+        callback_fn: *mut ::aya_bpf_cty::c_void,
+        callback_ctx: *mut ::aya_bpf_cty::c_void,
+        flags: __u64,
+    ) -> ::aya_bpf_cty::c_long = ::core::mem::transmute(180usize);
+    fun(task, addr, callback_fn, callback_ctx, flags)
+}