aya-obj,aya,ebpf,xtask: support perf_event hardware breakpoints

- aya-obj: Generate userspace bindings for HW_BREAKPOINT_* options
- aya: Support PERF_TYPE_BREAKPOINT by adding an optional hardware
  breakpoint configuration to PerfEvent::attach() and perf_event_open
  functions.
- ebpf: Generate bindings for `struct bpf_perf_event_data` and update
  the PerfEventContext to use them instead of a void pointer.
- xtask: Update codegen for constified anonymous HW_BREAKPOINT_* enums
reviewable/pr1365/r1
Friday Ortiz 1 month ago
parent fc5387c806
commit f7a9d73d42
No known key found for this signature in database
GPG Key ID: 16CDAE2458091846

@ -1,5 +1,6 @@
#include <linux/bpf.h> #include <linux/bpf.h>
#include <linux/btf.h> #include <linux/btf.h>
#include <linux/hw_breakpoint.h>
#include <linux/if_link.h> #include <linux/if_link.h>
#include <linux/netfilter.h> #include <linux/netfilter.h>
#include <linux/perf_event.h> #include <linux/perf_event.h>

@ -2105,6 +2105,22 @@ pub struct btf_var_secinfo {
pub struct btf_decl_tag { pub struct btf_decl_tag {
pub component_idx: __s32, pub component_idx: __s32,
} }
pub const HW_BREAKPOINT_LEN_1: _bindgen_ty_44 = 1;
pub const HW_BREAKPOINT_LEN_2: _bindgen_ty_44 = 2;
pub const HW_BREAKPOINT_LEN_3: _bindgen_ty_44 = 3;
pub const HW_BREAKPOINT_LEN_4: _bindgen_ty_44 = 4;
pub const HW_BREAKPOINT_LEN_5: _bindgen_ty_44 = 5;
pub const HW_BREAKPOINT_LEN_6: _bindgen_ty_44 = 6;
pub const HW_BREAKPOINT_LEN_7: _bindgen_ty_44 = 7;
pub const HW_BREAKPOINT_LEN_8: _bindgen_ty_44 = 8;
pub type _bindgen_ty_44 = ::core::ffi::c_uint;
pub const HW_BREAKPOINT_EMPTY: _bindgen_ty_45 = 0;
pub const HW_BREAKPOINT_R: _bindgen_ty_45 = 1;
pub const HW_BREAKPOINT_W: _bindgen_ty_45 = 2;
pub const HW_BREAKPOINT_RW: _bindgen_ty_45 = 3;
pub const HW_BREAKPOINT_X: _bindgen_ty_45 = 4;
pub const HW_BREAKPOINT_INVALID: _bindgen_ty_45 = 7;
pub type _bindgen_ty_45 = ::core::ffi::c_uint;
impl nlmsgerr_attrs { impl nlmsgerr_attrs {
pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE; pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE;
} }
@ -2117,17 +2133,17 @@ pub enum nlmsgerr_attrs {
NLMSGERR_ATTR_COOKIE = 3, NLMSGERR_ATTR_COOKIE = 3,
__NLMSGERR_ATTR_MAX = 4, __NLMSGERR_ATTR_MAX = 4,
} }
pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0; pub const IFLA_XDP_UNSPEC: _bindgen_ty_94 = 0;
pub const IFLA_XDP_FD: _bindgen_ty_92 = 1; pub const IFLA_XDP_FD: _bindgen_ty_94 = 1;
pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2; pub const IFLA_XDP_ATTACHED: _bindgen_ty_94 = 2;
pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3; pub const IFLA_XDP_FLAGS: _bindgen_ty_94 = 3;
pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4; pub const IFLA_XDP_PROG_ID: _bindgen_ty_94 = 4;
pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5; pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_94 = 5;
pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6; pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_94 = 6;
pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7; pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_94 = 7;
pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8; pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_94 = 8;
pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9; pub const __IFLA_XDP_MAX: _bindgen_ty_94 = 9;
pub type _bindgen_ty_92 = ::core::ffi::c_uint; pub type _bindgen_ty_94 = ::core::ffi::c_uint;
impl nf_inet_hooks { impl nf_inet_hooks {
pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS; pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
} }
@ -2141,16 +2157,16 @@ pub enum nf_inet_hooks {
NF_INET_POST_ROUTING = 4, NF_INET_POST_ROUTING = 4,
NF_INET_NUMHOOKS = 5, NF_INET_NUMHOOKS = 5,
} }
pub const NFPROTO_UNSPEC: _bindgen_ty_99 = 0; pub const NFPROTO_UNSPEC: _bindgen_ty_101 = 0;
pub const NFPROTO_INET: _bindgen_ty_99 = 1; pub const NFPROTO_INET: _bindgen_ty_101 = 1;
pub const NFPROTO_IPV4: _bindgen_ty_99 = 2; pub const NFPROTO_IPV4: _bindgen_ty_101 = 2;
pub const NFPROTO_ARP: _bindgen_ty_99 = 3; pub const NFPROTO_ARP: _bindgen_ty_101 = 3;
pub const NFPROTO_NETDEV: _bindgen_ty_99 = 5; pub const NFPROTO_NETDEV: _bindgen_ty_101 = 5;
pub const NFPROTO_BRIDGE: _bindgen_ty_99 = 7; pub const NFPROTO_BRIDGE: _bindgen_ty_101 = 7;
pub const NFPROTO_IPV6: _bindgen_ty_99 = 10; pub const NFPROTO_IPV6: _bindgen_ty_101 = 10;
pub const NFPROTO_DECNET: _bindgen_ty_99 = 12; pub const NFPROTO_DECNET: _bindgen_ty_101 = 12;
pub const NFPROTO_NUMPROTO: _bindgen_ty_99 = 13; pub const NFPROTO_NUMPROTO: _bindgen_ty_101 = 13;
pub type _bindgen_ty_99 = ::core::ffi::c_uint; pub type _bindgen_ty_101 = ::core::ffi::c_uint;
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id { pub enum perf_type_id {
@ -4111,20 +4127,20 @@ pub enum perf_event_type {
PERF_RECORD_AUX_OUTPUT_HW_ID = 21, PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22, PERF_RECORD_MAX = 22,
} }
pub const TCA_BPF_UNSPEC: _bindgen_ty_154 = 0; pub const TCA_BPF_UNSPEC: _bindgen_ty_156 = 0;
pub const TCA_BPF_ACT: _bindgen_ty_154 = 1; pub const TCA_BPF_ACT: _bindgen_ty_156 = 1;
pub const TCA_BPF_POLICE: _bindgen_ty_154 = 2; pub const TCA_BPF_POLICE: _bindgen_ty_156 = 2;
pub const TCA_BPF_CLASSID: _bindgen_ty_154 = 3; pub const TCA_BPF_CLASSID: _bindgen_ty_156 = 3;
pub const TCA_BPF_OPS_LEN: _bindgen_ty_154 = 4; pub const TCA_BPF_OPS_LEN: _bindgen_ty_156 = 4;
pub const TCA_BPF_OPS: _bindgen_ty_154 = 5; pub const TCA_BPF_OPS: _bindgen_ty_156 = 5;
pub const TCA_BPF_FD: _bindgen_ty_154 = 6; pub const TCA_BPF_FD: _bindgen_ty_156 = 6;
pub const TCA_BPF_NAME: _bindgen_ty_154 = 7; pub const TCA_BPF_NAME: _bindgen_ty_156 = 7;
pub const TCA_BPF_FLAGS: _bindgen_ty_154 = 8; pub const TCA_BPF_FLAGS: _bindgen_ty_156 = 8;
pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_154 = 9; pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_156 = 9;
pub const TCA_BPF_TAG: _bindgen_ty_154 = 10; pub const TCA_BPF_TAG: _bindgen_ty_156 = 10;
pub const TCA_BPF_ID: _bindgen_ty_154 = 11; pub const TCA_BPF_ID: _bindgen_ty_156 = 11;
pub const __TCA_BPF_MAX: _bindgen_ty_154 = 12; pub const __TCA_BPF_MAX: _bindgen_ty_156 = 12;
pub type _bindgen_ty_154 = ::core::ffi::c_uint; pub type _bindgen_ty_156 = ::core::ffi::c_uint;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ifinfomsg { pub struct ifinfomsg {
@ -4146,22 +4162,22 @@ pub struct tcmsg {
pub tcm_parent: __u32, pub tcm_parent: __u32,
pub tcm_info: __u32, pub tcm_info: __u32,
} }
pub const TCA_UNSPEC: _bindgen_ty_174 = 0; pub const TCA_UNSPEC: _bindgen_ty_176 = 0;
pub const TCA_KIND: _bindgen_ty_174 = 1; pub const TCA_KIND: _bindgen_ty_176 = 1;
pub const TCA_OPTIONS: _bindgen_ty_174 = 2; pub const TCA_OPTIONS: _bindgen_ty_176 = 2;
pub const TCA_STATS: _bindgen_ty_174 = 3; pub const TCA_STATS: _bindgen_ty_176 = 3;
pub const TCA_XSTATS: _bindgen_ty_174 = 4; pub const TCA_XSTATS: _bindgen_ty_176 = 4;
pub const TCA_RATE: _bindgen_ty_174 = 5; pub const TCA_RATE: _bindgen_ty_176 = 5;
pub const TCA_FCNT: _bindgen_ty_174 = 6; pub const TCA_FCNT: _bindgen_ty_176 = 6;
pub const TCA_STATS2: _bindgen_ty_174 = 7; pub const TCA_STATS2: _bindgen_ty_176 = 7;
pub const TCA_STAB: _bindgen_ty_174 = 8; pub const TCA_STAB: _bindgen_ty_176 = 8;
pub const TCA_PAD: _bindgen_ty_174 = 9; pub const TCA_PAD: _bindgen_ty_176 = 9;
pub const TCA_DUMP_INVISIBLE: _bindgen_ty_174 = 10; pub const TCA_DUMP_INVISIBLE: _bindgen_ty_176 = 10;
pub const TCA_CHAIN: _bindgen_ty_174 = 11; pub const TCA_CHAIN: _bindgen_ty_176 = 11;
pub const TCA_HW_OFFLOAD: _bindgen_ty_174 = 12; pub const TCA_HW_OFFLOAD: _bindgen_ty_176 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_174 = 13; pub const TCA_INGRESS_BLOCK: _bindgen_ty_176 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_174 = 14; pub const TCA_EGRESS_BLOCK: _bindgen_ty_176 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_174 = 15; pub const TCA_DUMP_FLAGS: _bindgen_ty_176 = 15;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_174 = 16; pub const TCA_EXT_WARN_MSG: _bindgen_ty_176 = 16;
pub const __TCA_MAX: _bindgen_ty_174 = 17; pub const __TCA_MAX: _bindgen_ty_176 = 17;
pub type _bindgen_ty_174 = ::core::ffi::c_uint; pub type _bindgen_ty_176 = ::core::ffi::c_uint;

@ -2105,6 +2105,22 @@ pub struct btf_var_secinfo {
pub struct btf_decl_tag { pub struct btf_decl_tag {
pub component_idx: __s32, pub component_idx: __s32,
} }
pub const HW_BREAKPOINT_LEN_1: _bindgen_ty_44 = 1;
pub const HW_BREAKPOINT_LEN_2: _bindgen_ty_44 = 2;
pub const HW_BREAKPOINT_LEN_3: _bindgen_ty_44 = 3;
pub const HW_BREAKPOINT_LEN_4: _bindgen_ty_44 = 4;
pub const HW_BREAKPOINT_LEN_5: _bindgen_ty_44 = 5;
pub const HW_BREAKPOINT_LEN_6: _bindgen_ty_44 = 6;
pub const HW_BREAKPOINT_LEN_7: _bindgen_ty_44 = 7;
pub const HW_BREAKPOINT_LEN_8: _bindgen_ty_44 = 8;
pub type _bindgen_ty_44 = ::core::ffi::c_uint;
pub const HW_BREAKPOINT_EMPTY: _bindgen_ty_45 = 0;
pub const HW_BREAKPOINT_R: _bindgen_ty_45 = 1;
pub const HW_BREAKPOINT_W: _bindgen_ty_45 = 2;
pub const HW_BREAKPOINT_RW: _bindgen_ty_45 = 3;
pub const HW_BREAKPOINT_X: _bindgen_ty_45 = 4;
pub const HW_BREAKPOINT_INVALID: _bindgen_ty_45 = 7;
pub type _bindgen_ty_45 = ::core::ffi::c_uint;
impl nlmsgerr_attrs { impl nlmsgerr_attrs {
pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE; pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE;
} }
@ -2117,17 +2133,17 @@ pub enum nlmsgerr_attrs {
NLMSGERR_ATTR_COOKIE = 3, NLMSGERR_ATTR_COOKIE = 3,
__NLMSGERR_ATTR_MAX = 4, __NLMSGERR_ATTR_MAX = 4,
} }
pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0; pub const IFLA_XDP_UNSPEC: _bindgen_ty_94 = 0;
pub const IFLA_XDP_FD: _bindgen_ty_92 = 1; pub const IFLA_XDP_FD: _bindgen_ty_94 = 1;
pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2; pub const IFLA_XDP_ATTACHED: _bindgen_ty_94 = 2;
pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3; pub const IFLA_XDP_FLAGS: _bindgen_ty_94 = 3;
pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4; pub const IFLA_XDP_PROG_ID: _bindgen_ty_94 = 4;
pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5; pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_94 = 5;
pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6; pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_94 = 6;
pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7; pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_94 = 7;
pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8; pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_94 = 8;
pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9; pub const __IFLA_XDP_MAX: _bindgen_ty_94 = 9;
pub type _bindgen_ty_92 = ::core::ffi::c_uint; pub type _bindgen_ty_94 = ::core::ffi::c_uint;
impl nf_inet_hooks { impl nf_inet_hooks {
pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS; pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
} }
@ -2141,16 +2157,16 @@ pub enum nf_inet_hooks {
NF_INET_POST_ROUTING = 4, NF_INET_POST_ROUTING = 4,
NF_INET_NUMHOOKS = 5, NF_INET_NUMHOOKS = 5,
} }
pub const NFPROTO_UNSPEC: _bindgen_ty_99 = 0; pub const NFPROTO_UNSPEC: _bindgen_ty_101 = 0;
pub const NFPROTO_INET: _bindgen_ty_99 = 1; pub const NFPROTO_INET: _bindgen_ty_101 = 1;
pub const NFPROTO_IPV4: _bindgen_ty_99 = 2; pub const NFPROTO_IPV4: _bindgen_ty_101 = 2;
pub const NFPROTO_ARP: _bindgen_ty_99 = 3; pub const NFPROTO_ARP: _bindgen_ty_101 = 3;
pub const NFPROTO_NETDEV: _bindgen_ty_99 = 5; pub const NFPROTO_NETDEV: _bindgen_ty_101 = 5;
pub const NFPROTO_BRIDGE: _bindgen_ty_99 = 7; pub const NFPROTO_BRIDGE: _bindgen_ty_101 = 7;
pub const NFPROTO_IPV6: _bindgen_ty_99 = 10; pub const NFPROTO_IPV6: _bindgen_ty_101 = 10;
pub const NFPROTO_DECNET: _bindgen_ty_99 = 12; pub const NFPROTO_DECNET: _bindgen_ty_101 = 12;
pub const NFPROTO_NUMPROTO: _bindgen_ty_99 = 13; pub const NFPROTO_NUMPROTO: _bindgen_ty_101 = 13;
pub type _bindgen_ty_99 = ::core::ffi::c_uint; pub type _bindgen_ty_101 = ::core::ffi::c_uint;
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id { pub enum perf_type_id {
@ -4111,20 +4127,20 @@ pub enum perf_event_type {
PERF_RECORD_AUX_OUTPUT_HW_ID = 21, PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22, PERF_RECORD_MAX = 22,
} }
pub const TCA_BPF_UNSPEC: _bindgen_ty_154 = 0; pub const TCA_BPF_UNSPEC: _bindgen_ty_156 = 0;
pub const TCA_BPF_ACT: _bindgen_ty_154 = 1; pub const TCA_BPF_ACT: _bindgen_ty_156 = 1;
pub const TCA_BPF_POLICE: _bindgen_ty_154 = 2; pub const TCA_BPF_POLICE: _bindgen_ty_156 = 2;
pub const TCA_BPF_CLASSID: _bindgen_ty_154 = 3; pub const TCA_BPF_CLASSID: _bindgen_ty_156 = 3;
pub const TCA_BPF_OPS_LEN: _bindgen_ty_154 = 4; pub const TCA_BPF_OPS_LEN: _bindgen_ty_156 = 4;
pub const TCA_BPF_OPS: _bindgen_ty_154 = 5; pub const TCA_BPF_OPS: _bindgen_ty_156 = 5;
pub const TCA_BPF_FD: _bindgen_ty_154 = 6; pub const TCA_BPF_FD: _bindgen_ty_156 = 6;
pub const TCA_BPF_NAME: _bindgen_ty_154 = 7; pub const TCA_BPF_NAME: _bindgen_ty_156 = 7;
pub const TCA_BPF_FLAGS: _bindgen_ty_154 = 8; pub const TCA_BPF_FLAGS: _bindgen_ty_156 = 8;
pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_154 = 9; pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_156 = 9;
pub const TCA_BPF_TAG: _bindgen_ty_154 = 10; pub const TCA_BPF_TAG: _bindgen_ty_156 = 10;
pub const TCA_BPF_ID: _bindgen_ty_154 = 11; pub const TCA_BPF_ID: _bindgen_ty_156 = 11;
pub const __TCA_BPF_MAX: _bindgen_ty_154 = 12; pub const __TCA_BPF_MAX: _bindgen_ty_156 = 12;
pub type _bindgen_ty_154 = ::core::ffi::c_uint; pub type _bindgen_ty_156 = ::core::ffi::c_uint;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ifinfomsg { pub struct ifinfomsg {
@ -4146,22 +4162,22 @@ pub struct tcmsg {
pub tcm_parent: __u32, pub tcm_parent: __u32,
pub tcm_info: __u32, pub tcm_info: __u32,
} }
pub const TCA_UNSPEC: _bindgen_ty_174 = 0; pub const TCA_UNSPEC: _bindgen_ty_176 = 0;
pub const TCA_KIND: _bindgen_ty_174 = 1; pub const TCA_KIND: _bindgen_ty_176 = 1;
pub const TCA_OPTIONS: _bindgen_ty_174 = 2; pub const TCA_OPTIONS: _bindgen_ty_176 = 2;
pub const TCA_STATS: _bindgen_ty_174 = 3; pub const TCA_STATS: _bindgen_ty_176 = 3;
pub const TCA_XSTATS: _bindgen_ty_174 = 4; pub const TCA_XSTATS: _bindgen_ty_176 = 4;
pub const TCA_RATE: _bindgen_ty_174 = 5; pub const TCA_RATE: _bindgen_ty_176 = 5;
pub const TCA_FCNT: _bindgen_ty_174 = 6; pub const TCA_FCNT: _bindgen_ty_176 = 6;
pub const TCA_STATS2: _bindgen_ty_174 = 7; pub const TCA_STATS2: _bindgen_ty_176 = 7;
pub const TCA_STAB: _bindgen_ty_174 = 8; pub const TCA_STAB: _bindgen_ty_176 = 8;
pub const TCA_PAD: _bindgen_ty_174 = 9; pub const TCA_PAD: _bindgen_ty_176 = 9;
pub const TCA_DUMP_INVISIBLE: _bindgen_ty_174 = 10; pub const TCA_DUMP_INVISIBLE: _bindgen_ty_176 = 10;
pub const TCA_CHAIN: _bindgen_ty_174 = 11; pub const TCA_CHAIN: _bindgen_ty_176 = 11;
pub const TCA_HW_OFFLOAD: _bindgen_ty_174 = 12; pub const TCA_HW_OFFLOAD: _bindgen_ty_176 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_174 = 13; pub const TCA_INGRESS_BLOCK: _bindgen_ty_176 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_174 = 14; pub const TCA_EGRESS_BLOCK: _bindgen_ty_176 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_174 = 15; pub const TCA_DUMP_FLAGS: _bindgen_ty_176 = 15;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_174 = 16; pub const TCA_EXT_WARN_MSG: _bindgen_ty_176 = 16;
pub const __TCA_MAX: _bindgen_ty_174 = 17; pub const __TCA_MAX: _bindgen_ty_176 = 17;
pub type _bindgen_ty_174 = ::core::ffi::c_uint; pub type _bindgen_ty_176 = ::core::ffi::c_uint;

@ -2105,6 +2105,22 @@ pub struct btf_var_secinfo {
pub struct btf_decl_tag { pub struct btf_decl_tag {
pub component_idx: __s32, pub component_idx: __s32,
} }
pub const HW_BREAKPOINT_LEN_1: _bindgen_ty_44 = 1;
pub const HW_BREAKPOINT_LEN_2: _bindgen_ty_44 = 2;
pub const HW_BREAKPOINT_LEN_3: _bindgen_ty_44 = 3;
pub const HW_BREAKPOINT_LEN_4: _bindgen_ty_44 = 4;
pub const HW_BREAKPOINT_LEN_5: _bindgen_ty_44 = 5;
pub const HW_BREAKPOINT_LEN_6: _bindgen_ty_44 = 6;
pub const HW_BREAKPOINT_LEN_7: _bindgen_ty_44 = 7;
pub const HW_BREAKPOINT_LEN_8: _bindgen_ty_44 = 8;
pub type _bindgen_ty_44 = ::core::ffi::c_uint;
pub const HW_BREAKPOINT_EMPTY: _bindgen_ty_45 = 0;
pub const HW_BREAKPOINT_R: _bindgen_ty_45 = 1;
pub const HW_BREAKPOINT_W: _bindgen_ty_45 = 2;
pub const HW_BREAKPOINT_RW: _bindgen_ty_45 = 3;
pub const HW_BREAKPOINT_X: _bindgen_ty_45 = 4;
pub const HW_BREAKPOINT_INVALID: _bindgen_ty_45 = 7;
pub type _bindgen_ty_45 = ::core::ffi::c_uint;
impl nlmsgerr_attrs { impl nlmsgerr_attrs {
pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE; pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE;
} }
@ -2117,17 +2133,17 @@ pub enum nlmsgerr_attrs {
NLMSGERR_ATTR_COOKIE = 3, NLMSGERR_ATTR_COOKIE = 3,
__NLMSGERR_ATTR_MAX = 4, __NLMSGERR_ATTR_MAX = 4,
} }
pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0; pub const IFLA_XDP_UNSPEC: _bindgen_ty_94 = 0;
pub const IFLA_XDP_FD: _bindgen_ty_92 = 1; pub const IFLA_XDP_FD: _bindgen_ty_94 = 1;
pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2; pub const IFLA_XDP_ATTACHED: _bindgen_ty_94 = 2;
pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3; pub const IFLA_XDP_FLAGS: _bindgen_ty_94 = 3;
pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4; pub const IFLA_XDP_PROG_ID: _bindgen_ty_94 = 4;
pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5; pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_94 = 5;
pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6; pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_94 = 6;
pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7; pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_94 = 7;
pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8; pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_94 = 8;
pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9; pub const __IFLA_XDP_MAX: _bindgen_ty_94 = 9;
pub type _bindgen_ty_92 = ::core::ffi::c_uint; pub type _bindgen_ty_94 = ::core::ffi::c_uint;
impl nf_inet_hooks { impl nf_inet_hooks {
pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS; pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
} }
@ -2141,16 +2157,16 @@ pub enum nf_inet_hooks {
NF_INET_POST_ROUTING = 4, NF_INET_POST_ROUTING = 4,
NF_INET_NUMHOOKS = 5, NF_INET_NUMHOOKS = 5,
} }
pub const NFPROTO_UNSPEC: _bindgen_ty_99 = 0; pub const NFPROTO_UNSPEC: _bindgen_ty_101 = 0;
pub const NFPROTO_INET: _bindgen_ty_99 = 1; pub const NFPROTO_INET: _bindgen_ty_101 = 1;
pub const NFPROTO_IPV4: _bindgen_ty_99 = 2; pub const NFPROTO_IPV4: _bindgen_ty_101 = 2;
pub const NFPROTO_ARP: _bindgen_ty_99 = 3; pub const NFPROTO_ARP: _bindgen_ty_101 = 3;
pub const NFPROTO_NETDEV: _bindgen_ty_99 = 5; pub const NFPROTO_NETDEV: _bindgen_ty_101 = 5;
pub const NFPROTO_BRIDGE: _bindgen_ty_99 = 7; pub const NFPROTO_BRIDGE: _bindgen_ty_101 = 7;
pub const NFPROTO_IPV6: _bindgen_ty_99 = 10; pub const NFPROTO_IPV6: _bindgen_ty_101 = 10;
pub const NFPROTO_DECNET: _bindgen_ty_99 = 12; pub const NFPROTO_DECNET: _bindgen_ty_101 = 12;
pub const NFPROTO_NUMPROTO: _bindgen_ty_99 = 13; pub const NFPROTO_NUMPROTO: _bindgen_ty_101 = 13;
pub type _bindgen_ty_99 = ::core::ffi::c_uint; pub type _bindgen_ty_101 = ::core::ffi::c_uint;
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id { pub enum perf_type_id {
@ -4111,20 +4127,20 @@ pub enum perf_event_type {
PERF_RECORD_AUX_OUTPUT_HW_ID = 21, PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22, PERF_RECORD_MAX = 22,
} }
pub const TCA_BPF_UNSPEC: _bindgen_ty_154 = 0; pub const TCA_BPF_UNSPEC: _bindgen_ty_156 = 0;
pub const TCA_BPF_ACT: _bindgen_ty_154 = 1; pub const TCA_BPF_ACT: _bindgen_ty_156 = 1;
pub const TCA_BPF_POLICE: _bindgen_ty_154 = 2; pub const TCA_BPF_POLICE: _bindgen_ty_156 = 2;
pub const TCA_BPF_CLASSID: _bindgen_ty_154 = 3; pub const TCA_BPF_CLASSID: _bindgen_ty_156 = 3;
pub const TCA_BPF_OPS_LEN: _bindgen_ty_154 = 4; pub const TCA_BPF_OPS_LEN: _bindgen_ty_156 = 4;
pub const TCA_BPF_OPS: _bindgen_ty_154 = 5; pub const TCA_BPF_OPS: _bindgen_ty_156 = 5;
pub const TCA_BPF_FD: _bindgen_ty_154 = 6; pub const TCA_BPF_FD: _bindgen_ty_156 = 6;
pub const TCA_BPF_NAME: _bindgen_ty_154 = 7; pub const TCA_BPF_NAME: _bindgen_ty_156 = 7;
pub const TCA_BPF_FLAGS: _bindgen_ty_154 = 8; pub const TCA_BPF_FLAGS: _bindgen_ty_156 = 8;
pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_154 = 9; pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_156 = 9;
pub const TCA_BPF_TAG: _bindgen_ty_154 = 10; pub const TCA_BPF_TAG: _bindgen_ty_156 = 10;
pub const TCA_BPF_ID: _bindgen_ty_154 = 11; pub const TCA_BPF_ID: _bindgen_ty_156 = 11;
pub const __TCA_BPF_MAX: _bindgen_ty_154 = 12; pub const __TCA_BPF_MAX: _bindgen_ty_156 = 12;
pub type _bindgen_ty_154 = ::core::ffi::c_uint; pub type _bindgen_ty_156 = ::core::ffi::c_uint;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ifinfomsg { pub struct ifinfomsg {
@ -4146,22 +4162,22 @@ pub struct tcmsg {
pub tcm_parent: __u32, pub tcm_parent: __u32,
pub tcm_info: __u32, pub tcm_info: __u32,
} }
pub const TCA_UNSPEC: _bindgen_ty_174 = 0; pub const TCA_UNSPEC: _bindgen_ty_176 = 0;
pub const TCA_KIND: _bindgen_ty_174 = 1; pub const TCA_KIND: _bindgen_ty_176 = 1;
pub const TCA_OPTIONS: _bindgen_ty_174 = 2; pub const TCA_OPTIONS: _bindgen_ty_176 = 2;
pub const TCA_STATS: _bindgen_ty_174 = 3; pub const TCA_STATS: _bindgen_ty_176 = 3;
pub const TCA_XSTATS: _bindgen_ty_174 = 4; pub const TCA_XSTATS: _bindgen_ty_176 = 4;
pub const TCA_RATE: _bindgen_ty_174 = 5; pub const TCA_RATE: _bindgen_ty_176 = 5;
pub const TCA_FCNT: _bindgen_ty_174 = 6; pub const TCA_FCNT: _bindgen_ty_176 = 6;
pub const TCA_STATS2: _bindgen_ty_174 = 7; pub const TCA_STATS2: _bindgen_ty_176 = 7;
pub const TCA_STAB: _bindgen_ty_174 = 8; pub const TCA_STAB: _bindgen_ty_176 = 8;
pub const TCA_PAD: _bindgen_ty_174 = 9; pub const TCA_PAD: _bindgen_ty_176 = 9;
pub const TCA_DUMP_INVISIBLE: _bindgen_ty_174 = 10; pub const TCA_DUMP_INVISIBLE: _bindgen_ty_176 = 10;
pub const TCA_CHAIN: _bindgen_ty_174 = 11; pub const TCA_CHAIN: _bindgen_ty_176 = 11;
pub const TCA_HW_OFFLOAD: _bindgen_ty_174 = 12; pub const TCA_HW_OFFLOAD: _bindgen_ty_176 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_174 = 13; pub const TCA_INGRESS_BLOCK: _bindgen_ty_176 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_174 = 14; pub const TCA_EGRESS_BLOCK: _bindgen_ty_176 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_174 = 15; pub const TCA_DUMP_FLAGS: _bindgen_ty_176 = 15;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_174 = 16; pub const TCA_EXT_WARN_MSG: _bindgen_ty_176 = 16;
pub const __TCA_MAX: _bindgen_ty_174 = 17; pub const __TCA_MAX: _bindgen_ty_176 = 17;
pub type _bindgen_ty_174 = ::core::ffi::c_uint; pub type _bindgen_ty_176 = ::core::ffi::c_uint;

@ -2105,6 +2105,22 @@ pub struct btf_var_secinfo {
pub struct btf_decl_tag { pub struct btf_decl_tag {
pub component_idx: __s32, pub component_idx: __s32,
} }
pub const HW_BREAKPOINT_LEN_1: _bindgen_ty_44 = 1;
pub const HW_BREAKPOINT_LEN_2: _bindgen_ty_44 = 2;
pub const HW_BREAKPOINT_LEN_3: _bindgen_ty_44 = 3;
pub const HW_BREAKPOINT_LEN_4: _bindgen_ty_44 = 4;
pub const HW_BREAKPOINT_LEN_5: _bindgen_ty_44 = 5;
pub const HW_BREAKPOINT_LEN_6: _bindgen_ty_44 = 6;
pub const HW_BREAKPOINT_LEN_7: _bindgen_ty_44 = 7;
pub const HW_BREAKPOINT_LEN_8: _bindgen_ty_44 = 8;
pub type _bindgen_ty_44 = ::core::ffi::c_uint;
pub const HW_BREAKPOINT_EMPTY: _bindgen_ty_45 = 0;
pub const HW_BREAKPOINT_R: _bindgen_ty_45 = 1;
pub const HW_BREAKPOINT_W: _bindgen_ty_45 = 2;
pub const HW_BREAKPOINT_RW: _bindgen_ty_45 = 3;
pub const HW_BREAKPOINT_X: _bindgen_ty_45 = 4;
pub const HW_BREAKPOINT_INVALID: _bindgen_ty_45 = 7;
pub type _bindgen_ty_45 = ::core::ffi::c_uint;
impl nlmsgerr_attrs { impl nlmsgerr_attrs {
pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE; pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE;
} }
@ -2117,17 +2133,17 @@ pub enum nlmsgerr_attrs {
NLMSGERR_ATTR_COOKIE = 3, NLMSGERR_ATTR_COOKIE = 3,
__NLMSGERR_ATTR_MAX = 4, __NLMSGERR_ATTR_MAX = 4,
} }
pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0; pub const IFLA_XDP_UNSPEC: _bindgen_ty_94 = 0;
pub const IFLA_XDP_FD: _bindgen_ty_92 = 1; pub const IFLA_XDP_FD: _bindgen_ty_94 = 1;
pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2; pub const IFLA_XDP_ATTACHED: _bindgen_ty_94 = 2;
pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3; pub const IFLA_XDP_FLAGS: _bindgen_ty_94 = 3;
pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4; pub const IFLA_XDP_PROG_ID: _bindgen_ty_94 = 4;
pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5; pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_94 = 5;
pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6; pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_94 = 6;
pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7; pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_94 = 7;
pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8; pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_94 = 8;
pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9; pub const __IFLA_XDP_MAX: _bindgen_ty_94 = 9;
pub type _bindgen_ty_92 = ::core::ffi::c_uint; pub type _bindgen_ty_94 = ::core::ffi::c_uint;
impl nf_inet_hooks { impl nf_inet_hooks {
pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS; pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
} }
@ -2141,16 +2157,16 @@ pub enum nf_inet_hooks {
NF_INET_POST_ROUTING = 4, NF_INET_POST_ROUTING = 4,
NF_INET_NUMHOOKS = 5, NF_INET_NUMHOOKS = 5,
} }
pub const NFPROTO_UNSPEC: _bindgen_ty_99 = 0; pub const NFPROTO_UNSPEC: _bindgen_ty_101 = 0;
pub const NFPROTO_INET: _bindgen_ty_99 = 1; pub const NFPROTO_INET: _bindgen_ty_101 = 1;
pub const NFPROTO_IPV4: _bindgen_ty_99 = 2; pub const NFPROTO_IPV4: _bindgen_ty_101 = 2;
pub const NFPROTO_ARP: _bindgen_ty_99 = 3; pub const NFPROTO_ARP: _bindgen_ty_101 = 3;
pub const NFPROTO_NETDEV: _bindgen_ty_99 = 5; pub const NFPROTO_NETDEV: _bindgen_ty_101 = 5;
pub const NFPROTO_BRIDGE: _bindgen_ty_99 = 7; pub const NFPROTO_BRIDGE: _bindgen_ty_101 = 7;
pub const NFPROTO_IPV6: _bindgen_ty_99 = 10; pub const NFPROTO_IPV6: _bindgen_ty_101 = 10;
pub const NFPROTO_DECNET: _bindgen_ty_99 = 12; pub const NFPROTO_DECNET: _bindgen_ty_101 = 12;
pub const NFPROTO_NUMPROTO: _bindgen_ty_99 = 13; pub const NFPROTO_NUMPROTO: _bindgen_ty_101 = 13;
pub type _bindgen_ty_99 = ::core::ffi::c_uint; pub type _bindgen_ty_101 = ::core::ffi::c_uint;
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id { pub enum perf_type_id {
@ -4111,20 +4127,20 @@ pub enum perf_event_type {
PERF_RECORD_AUX_OUTPUT_HW_ID = 21, PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22, PERF_RECORD_MAX = 22,
} }
pub const TCA_BPF_UNSPEC: _bindgen_ty_154 = 0; pub const TCA_BPF_UNSPEC: _bindgen_ty_156 = 0;
pub const TCA_BPF_ACT: _bindgen_ty_154 = 1; pub const TCA_BPF_ACT: _bindgen_ty_156 = 1;
pub const TCA_BPF_POLICE: _bindgen_ty_154 = 2; pub const TCA_BPF_POLICE: _bindgen_ty_156 = 2;
pub const TCA_BPF_CLASSID: _bindgen_ty_154 = 3; pub const TCA_BPF_CLASSID: _bindgen_ty_156 = 3;
pub const TCA_BPF_OPS_LEN: _bindgen_ty_154 = 4; pub const TCA_BPF_OPS_LEN: _bindgen_ty_156 = 4;
pub const TCA_BPF_OPS: _bindgen_ty_154 = 5; pub const TCA_BPF_OPS: _bindgen_ty_156 = 5;
pub const TCA_BPF_FD: _bindgen_ty_154 = 6; pub const TCA_BPF_FD: _bindgen_ty_156 = 6;
pub const TCA_BPF_NAME: _bindgen_ty_154 = 7; pub const TCA_BPF_NAME: _bindgen_ty_156 = 7;
pub const TCA_BPF_FLAGS: _bindgen_ty_154 = 8; pub const TCA_BPF_FLAGS: _bindgen_ty_156 = 8;
pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_154 = 9; pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_156 = 9;
pub const TCA_BPF_TAG: _bindgen_ty_154 = 10; pub const TCA_BPF_TAG: _bindgen_ty_156 = 10;
pub const TCA_BPF_ID: _bindgen_ty_154 = 11; pub const TCA_BPF_ID: _bindgen_ty_156 = 11;
pub const __TCA_BPF_MAX: _bindgen_ty_154 = 12; pub const __TCA_BPF_MAX: _bindgen_ty_156 = 12;
pub type _bindgen_ty_154 = ::core::ffi::c_uint; pub type _bindgen_ty_156 = ::core::ffi::c_uint;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ifinfomsg { pub struct ifinfomsg {
@ -4146,22 +4162,22 @@ pub struct tcmsg {
pub tcm_parent: __u32, pub tcm_parent: __u32,
pub tcm_info: __u32, pub tcm_info: __u32,
} }
pub const TCA_UNSPEC: _bindgen_ty_174 = 0; pub const TCA_UNSPEC: _bindgen_ty_176 = 0;
pub const TCA_KIND: _bindgen_ty_174 = 1; pub const TCA_KIND: _bindgen_ty_176 = 1;
pub const TCA_OPTIONS: _bindgen_ty_174 = 2; pub const TCA_OPTIONS: _bindgen_ty_176 = 2;
pub const TCA_STATS: _bindgen_ty_174 = 3; pub const TCA_STATS: _bindgen_ty_176 = 3;
pub const TCA_XSTATS: _bindgen_ty_174 = 4; pub const TCA_XSTATS: _bindgen_ty_176 = 4;
pub const TCA_RATE: _bindgen_ty_174 = 5; pub const TCA_RATE: _bindgen_ty_176 = 5;
pub const TCA_FCNT: _bindgen_ty_174 = 6; pub const TCA_FCNT: _bindgen_ty_176 = 6;
pub const TCA_STATS2: _bindgen_ty_174 = 7; pub const TCA_STATS2: _bindgen_ty_176 = 7;
pub const TCA_STAB: _bindgen_ty_174 = 8; pub const TCA_STAB: _bindgen_ty_176 = 8;
pub const TCA_PAD: _bindgen_ty_174 = 9; pub const TCA_PAD: _bindgen_ty_176 = 9;
pub const TCA_DUMP_INVISIBLE: _bindgen_ty_174 = 10; pub const TCA_DUMP_INVISIBLE: _bindgen_ty_176 = 10;
pub const TCA_CHAIN: _bindgen_ty_174 = 11; pub const TCA_CHAIN: _bindgen_ty_176 = 11;
pub const TCA_HW_OFFLOAD: _bindgen_ty_174 = 12; pub const TCA_HW_OFFLOAD: _bindgen_ty_176 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_174 = 13; pub const TCA_INGRESS_BLOCK: _bindgen_ty_176 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_174 = 14; pub const TCA_EGRESS_BLOCK: _bindgen_ty_176 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_174 = 15; pub const TCA_DUMP_FLAGS: _bindgen_ty_176 = 15;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_174 = 16; pub const TCA_EXT_WARN_MSG: _bindgen_ty_176 = 16;
pub const __TCA_MAX: _bindgen_ty_174 = 17; pub const __TCA_MAX: _bindgen_ty_176 = 17;
pub type _bindgen_ty_174 = ::core::ffi::c_uint; pub type _bindgen_ty_176 = ::core::ffi::c_uint;

@ -2105,6 +2105,22 @@ pub struct btf_var_secinfo {
pub struct btf_decl_tag { pub struct btf_decl_tag {
pub component_idx: __s32, pub component_idx: __s32,
} }
pub const HW_BREAKPOINT_LEN_1: _bindgen_ty_44 = 1;
pub const HW_BREAKPOINT_LEN_2: _bindgen_ty_44 = 2;
pub const HW_BREAKPOINT_LEN_3: _bindgen_ty_44 = 3;
pub const HW_BREAKPOINT_LEN_4: _bindgen_ty_44 = 4;
pub const HW_BREAKPOINT_LEN_5: _bindgen_ty_44 = 5;
pub const HW_BREAKPOINT_LEN_6: _bindgen_ty_44 = 6;
pub const HW_BREAKPOINT_LEN_7: _bindgen_ty_44 = 7;
pub const HW_BREAKPOINT_LEN_8: _bindgen_ty_44 = 8;
pub type _bindgen_ty_44 = ::core::ffi::c_uint;
pub const HW_BREAKPOINT_EMPTY: _bindgen_ty_45 = 0;
pub const HW_BREAKPOINT_R: _bindgen_ty_45 = 1;
pub const HW_BREAKPOINT_W: _bindgen_ty_45 = 2;
pub const HW_BREAKPOINT_RW: _bindgen_ty_45 = 3;
pub const HW_BREAKPOINT_X: _bindgen_ty_45 = 4;
pub const HW_BREAKPOINT_INVALID: _bindgen_ty_45 = 7;
pub type _bindgen_ty_45 = ::core::ffi::c_uint;
impl nlmsgerr_attrs { impl nlmsgerr_attrs {
pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE; pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE;
} }
@ -2117,17 +2133,17 @@ pub enum nlmsgerr_attrs {
NLMSGERR_ATTR_COOKIE = 3, NLMSGERR_ATTR_COOKIE = 3,
__NLMSGERR_ATTR_MAX = 4, __NLMSGERR_ATTR_MAX = 4,
} }
pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0; pub const IFLA_XDP_UNSPEC: _bindgen_ty_94 = 0;
pub const IFLA_XDP_FD: _bindgen_ty_92 = 1; pub const IFLA_XDP_FD: _bindgen_ty_94 = 1;
pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2; pub const IFLA_XDP_ATTACHED: _bindgen_ty_94 = 2;
pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3; pub const IFLA_XDP_FLAGS: _bindgen_ty_94 = 3;
pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4; pub const IFLA_XDP_PROG_ID: _bindgen_ty_94 = 4;
pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5; pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_94 = 5;
pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6; pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_94 = 6;
pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7; pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_94 = 7;
pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8; pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_94 = 8;
pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9; pub const __IFLA_XDP_MAX: _bindgen_ty_94 = 9;
pub type _bindgen_ty_92 = ::core::ffi::c_uint; pub type _bindgen_ty_94 = ::core::ffi::c_uint;
impl nf_inet_hooks { impl nf_inet_hooks {
pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS; pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
} }
@ -2141,16 +2157,16 @@ pub enum nf_inet_hooks {
NF_INET_POST_ROUTING = 4, NF_INET_POST_ROUTING = 4,
NF_INET_NUMHOOKS = 5, NF_INET_NUMHOOKS = 5,
} }
pub const NFPROTO_UNSPEC: _bindgen_ty_99 = 0; pub const NFPROTO_UNSPEC: _bindgen_ty_101 = 0;
pub const NFPROTO_INET: _bindgen_ty_99 = 1; pub const NFPROTO_INET: _bindgen_ty_101 = 1;
pub const NFPROTO_IPV4: _bindgen_ty_99 = 2; pub const NFPROTO_IPV4: _bindgen_ty_101 = 2;
pub const NFPROTO_ARP: _bindgen_ty_99 = 3; pub const NFPROTO_ARP: _bindgen_ty_101 = 3;
pub const NFPROTO_NETDEV: _bindgen_ty_99 = 5; pub const NFPROTO_NETDEV: _bindgen_ty_101 = 5;
pub const NFPROTO_BRIDGE: _bindgen_ty_99 = 7; pub const NFPROTO_BRIDGE: _bindgen_ty_101 = 7;
pub const NFPROTO_IPV6: _bindgen_ty_99 = 10; pub const NFPROTO_IPV6: _bindgen_ty_101 = 10;
pub const NFPROTO_DECNET: _bindgen_ty_99 = 12; pub const NFPROTO_DECNET: _bindgen_ty_101 = 12;
pub const NFPROTO_NUMPROTO: _bindgen_ty_99 = 13; pub const NFPROTO_NUMPROTO: _bindgen_ty_101 = 13;
pub type _bindgen_ty_99 = ::core::ffi::c_uint; pub type _bindgen_ty_101 = ::core::ffi::c_uint;
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id { pub enum perf_type_id {
@ -4111,20 +4127,20 @@ pub enum perf_event_type {
PERF_RECORD_AUX_OUTPUT_HW_ID = 21, PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22, PERF_RECORD_MAX = 22,
} }
pub const TCA_BPF_UNSPEC: _bindgen_ty_154 = 0; pub const TCA_BPF_UNSPEC: _bindgen_ty_156 = 0;
pub const TCA_BPF_ACT: _bindgen_ty_154 = 1; pub const TCA_BPF_ACT: _bindgen_ty_156 = 1;
pub const TCA_BPF_POLICE: _bindgen_ty_154 = 2; pub const TCA_BPF_POLICE: _bindgen_ty_156 = 2;
pub const TCA_BPF_CLASSID: _bindgen_ty_154 = 3; pub const TCA_BPF_CLASSID: _bindgen_ty_156 = 3;
pub const TCA_BPF_OPS_LEN: _bindgen_ty_154 = 4; pub const TCA_BPF_OPS_LEN: _bindgen_ty_156 = 4;
pub const TCA_BPF_OPS: _bindgen_ty_154 = 5; pub const TCA_BPF_OPS: _bindgen_ty_156 = 5;
pub const TCA_BPF_FD: _bindgen_ty_154 = 6; pub const TCA_BPF_FD: _bindgen_ty_156 = 6;
pub const TCA_BPF_NAME: _bindgen_ty_154 = 7; pub const TCA_BPF_NAME: _bindgen_ty_156 = 7;
pub const TCA_BPF_FLAGS: _bindgen_ty_154 = 8; pub const TCA_BPF_FLAGS: _bindgen_ty_156 = 8;
pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_154 = 9; pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_156 = 9;
pub const TCA_BPF_TAG: _bindgen_ty_154 = 10; pub const TCA_BPF_TAG: _bindgen_ty_156 = 10;
pub const TCA_BPF_ID: _bindgen_ty_154 = 11; pub const TCA_BPF_ID: _bindgen_ty_156 = 11;
pub const __TCA_BPF_MAX: _bindgen_ty_154 = 12; pub const __TCA_BPF_MAX: _bindgen_ty_156 = 12;
pub type _bindgen_ty_154 = ::core::ffi::c_uint; pub type _bindgen_ty_156 = ::core::ffi::c_uint;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ifinfomsg { pub struct ifinfomsg {
@ -4146,22 +4162,22 @@ pub struct tcmsg {
pub tcm_parent: __u32, pub tcm_parent: __u32,
pub tcm_info: __u32, pub tcm_info: __u32,
} }
pub const TCA_UNSPEC: _bindgen_ty_174 = 0; pub const TCA_UNSPEC: _bindgen_ty_176 = 0;
pub const TCA_KIND: _bindgen_ty_174 = 1; pub const TCA_KIND: _bindgen_ty_176 = 1;
pub const TCA_OPTIONS: _bindgen_ty_174 = 2; pub const TCA_OPTIONS: _bindgen_ty_176 = 2;
pub const TCA_STATS: _bindgen_ty_174 = 3; pub const TCA_STATS: _bindgen_ty_176 = 3;
pub const TCA_XSTATS: _bindgen_ty_174 = 4; pub const TCA_XSTATS: _bindgen_ty_176 = 4;
pub const TCA_RATE: _bindgen_ty_174 = 5; pub const TCA_RATE: _bindgen_ty_176 = 5;
pub const TCA_FCNT: _bindgen_ty_174 = 6; pub const TCA_FCNT: _bindgen_ty_176 = 6;
pub const TCA_STATS2: _bindgen_ty_174 = 7; pub const TCA_STATS2: _bindgen_ty_176 = 7;
pub const TCA_STAB: _bindgen_ty_174 = 8; pub const TCA_STAB: _bindgen_ty_176 = 8;
pub const TCA_PAD: _bindgen_ty_174 = 9; pub const TCA_PAD: _bindgen_ty_176 = 9;
pub const TCA_DUMP_INVISIBLE: _bindgen_ty_174 = 10; pub const TCA_DUMP_INVISIBLE: _bindgen_ty_176 = 10;
pub const TCA_CHAIN: _bindgen_ty_174 = 11; pub const TCA_CHAIN: _bindgen_ty_176 = 11;
pub const TCA_HW_OFFLOAD: _bindgen_ty_174 = 12; pub const TCA_HW_OFFLOAD: _bindgen_ty_176 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_174 = 13; pub const TCA_INGRESS_BLOCK: _bindgen_ty_176 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_174 = 14; pub const TCA_EGRESS_BLOCK: _bindgen_ty_176 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_174 = 15; pub const TCA_DUMP_FLAGS: _bindgen_ty_176 = 15;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_174 = 16; pub const TCA_EXT_WARN_MSG: _bindgen_ty_176 = 16;
pub const __TCA_MAX: _bindgen_ty_174 = 17; pub const __TCA_MAX: _bindgen_ty_176 = 17;
pub type _bindgen_ty_174 = ::core::ffi::c_uint; pub type _bindgen_ty_176 = ::core::ffi::c_uint;

@ -2105,6 +2105,22 @@ pub struct btf_var_secinfo {
pub struct btf_decl_tag { pub struct btf_decl_tag {
pub component_idx: __s32, pub component_idx: __s32,
} }
pub const HW_BREAKPOINT_LEN_1: _bindgen_ty_44 = 1;
pub const HW_BREAKPOINT_LEN_2: _bindgen_ty_44 = 2;
pub const HW_BREAKPOINT_LEN_3: _bindgen_ty_44 = 3;
pub const HW_BREAKPOINT_LEN_4: _bindgen_ty_44 = 4;
pub const HW_BREAKPOINT_LEN_5: _bindgen_ty_44 = 5;
pub const HW_BREAKPOINT_LEN_6: _bindgen_ty_44 = 6;
pub const HW_BREAKPOINT_LEN_7: _bindgen_ty_44 = 7;
pub const HW_BREAKPOINT_LEN_8: _bindgen_ty_44 = 8;
pub type _bindgen_ty_44 = ::core::ffi::c_uint;
pub const HW_BREAKPOINT_EMPTY: _bindgen_ty_45 = 0;
pub const HW_BREAKPOINT_R: _bindgen_ty_45 = 1;
pub const HW_BREAKPOINT_W: _bindgen_ty_45 = 2;
pub const HW_BREAKPOINT_RW: _bindgen_ty_45 = 3;
pub const HW_BREAKPOINT_X: _bindgen_ty_45 = 4;
pub const HW_BREAKPOINT_INVALID: _bindgen_ty_45 = 7;
pub type _bindgen_ty_45 = ::core::ffi::c_uint;
impl nlmsgerr_attrs { impl nlmsgerr_attrs {
pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE; pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE;
} }
@ -2117,17 +2133,17 @@ pub enum nlmsgerr_attrs {
NLMSGERR_ATTR_COOKIE = 3, NLMSGERR_ATTR_COOKIE = 3,
__NLMSGERR_ATTR_MAX = 4, __NLMSGERR_ATTR_MAX = 4,
} }
pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0; pub const IFLA_XDP_UNSPEC: _bindgen_ty_94 = 0;
pub const IFLA_XDP_FD: _bindgen_ty_92 = 1; pub const IFLA_XDP_FD: _bindgen_ty_94 = 1;
pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2; pub const IFLA_XDP_ATTACHED: _bindgen_ty_94 = 2;
pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3; pub const IFLA_XDP_FLAGS: _bindgen_ty_94 = 3;
pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4; pub const IFLA_XDP_PROG_ID: _bindgen_ty_94 = 4;
pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5; pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_94 = 5;
pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6; pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_94 = 6;
pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7; pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_94 = 7;
pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8; pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_94 = 8;
pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9; pub const __IFLA_XDP_MAX: _bindgen_ty_94 = 9;
pub type _bindgen_ty_92 = ::core::ffi::c_uint; pub type _bindgen_ty_94 = ::core::ffi::c_uint;
impl nf_inet_hooks { impl nf_inet_hooks {
pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS; pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
} }
@ -2141,16 +2157,16 @@ pub enum nf_inet_hooks {
NF_INET_POST_ROUTING = 4, NF_INET_POST_ROUTING = 4,
NF_INET_NUMHOOKS = 5, NF_INET_NUMHOOKS = 5,
} }
pub const NFPROTO_UNSPEC: _bindgen_ty_99 = 0; pub const NFPROTO_UNSPEC: _bindgen_ty_101 = 0;
pub const NFPROTO_INET: _bindgen_ty_99 = 1; pub const NFPROTO_INET: _bindgen_ty_101 = 1;
pub const NFPROTO_IPV4: _bindgen_ty_99 = 2; pub const NFPROTO_IPV4: _bindgen_ty_101 = 2;
pub const NFPROTO_ARP: _bindgen_ty_99 = 3; pub const NFPROTO_ARP: _bindgen_ty_101 = 3;
pub const NFPROTO_NETDEV: _bindgen_ty_99 = 5; pub const NFPROTO_NETDEV: _bindgen_ty_101 = 5;
pub const NFPROTO_BRIDGE: _bindgen_ty_99 = 7; pub const NFPROTO_BRIDGE: _bindgen_ty_101 = 7;
pub const NFPROTO_IPV6: _bindgen_ty_99 = 10; pub const NFPROTO_IPV6: _bindgen_ty_101 = 10;
pub const NFPROTO_DECNET: _bindgen_ty_99 = 12; pub const NFPROTO_DECNET: _bindgen_ty_101 = 12;
pub const NFPROTO_NUMPROTO: _bindgen_ty_99 = 13; pub const NFPROTO_NUMPROTO: _bindgen_ty_101 = 13;
pub type _bindgen_ty_99 = ::core::ffi::c_uint; pub type _bindgen_ty_101 = ::core::ffi::c_uint;
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id { pub enum perf_type_id {
@ -4111,20 +4127,20 @@ pub enum perf_event_type {
PERF_RECORD_AUX_OUTPUT_HW_ID = 21, PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22, PERF_RECORD_MAX = 22,
} }
pub const TCA_BPF_UNSPEC: _bindgen_ty_154 = 0; pub const TCA_BPF_UNSPEC: _bindgen_ty_156 = 0;
pub const TCA_BPF_ACT: _bindgen_ty_154 = 1; pub const TCA_BPF_ACT: _bindgen_ty_156 = 1;
pub const TCA_BPF_POLICE: _bindgen_ty_154 = 2; pub const TCA_BPF_POLICE: _bindgen_ty_156 = 2;
pub const TCA_BPF_CLASSID: _bindgen_ty_154 = 3; pub const TCA_BPF_CLASSID: _bindgen_ty_156 = 3;
pub const TCA_BPF_OPS_LEN: _bindgen_ty_154 = 4; pub const TCA_BPF_OPS_LEN: _bindgen_ty_156 = 4;
pub const TCA_BPF_OPS: _bindgen_ty_154 = 5; pub const TCA_BPF_OPS: _bindgen_ty_156 = 5;
pub const TCA_BPF_FD: _bindgen_ty_154 = 6; pub const TCA_BPF_FD: _bindgen_ty_156 = 6;
pub const TCA_BPF_NAME: _bindgen_ty_154 = 7; pub const TCA_BPF_NAME: _bindgen_ty_156 = 7;
pub const TCA_BPF_FLAGS: _bindgen_ty_154 = 8; pub const TCA_BPF_FLAGS: _bindgen_ty_156 = 8;
pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_154 = 9; pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_156 = 9;
pub const TCA_BPF_TAG: _bindgen_ty_154 = 10; pub const TCA_BPF_TAG: _bindgen_ty_156 = 10;
pub const TCA_BPF_ID: _bindgen_ty_154 = 11; pub const TCA_BPF_ID: _bindgen_ty_156 = 11;
pub const __TCA_BPF_MAX: _bindgen_ty_154 = 12; pub const __TCA_BPF_MAX: _bindgen_ty_156 = 12;
pub type _bindgen_ty_154 = ::core::ffi::c_uint; pub type _bindgen_ty_156 = ::core::ffi::c_uint;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ifinfomsg { pub struct ifinfomsg {
@ -4146,22 +4162,22 @@ pub struct tcmsg {
pub tcm_parent: __u32, pub tcm_parent: __u32,
pub tcm_info: __u32, pub tcm_info: __u32,
} }
pub const TCA_UNSPEC: _bindgen_ty_174 = 0; pub const TCA_UNSPEC: _bindgen_ty_176 = 0;
pub const TCA_KIND: _bindgen_ty_174 = 1; pub const TCA_KIND: _bindgen_ty_176 = 1;
pub const TCA_OPTIONS: _bindgen_ty_174 = 2; pub const TCA_OPTIONS: _bindgen_ty_176 = 2;
pub const TCA_STATS: _bindgen_ty_174 = 3; pub const TCA_STATS: _bindgen_ty_176 = 3;
pub const TCA_XSTATS: _bindgen_ty_174 = 4; pub const TCA_XSTATS: _bindgen_ty_176 = 4;
pub const TCA_RATE: _bindgen_ty_174 = 5; pub const TCA_RATE: _bindgen_ty_176 = 5;
pub const TCA_FCNT: _bindgen_ty_174 = 6; pub const TCA_FCNT: _bindgen_ty_176 = 6;
pub const TCA_STATS2: _bindgen_ty_174 = 7; pub const TCA_STATS2: _bindgen_ty_176 = 7;
pub const TCA_STAB: _bindgen_ty_174 = 8; pub const TCA_STAB: _bindgen_ty_176 = 8;
pub const TCA_PAD: _bindgen_ty_174 = 9; pub const TCA_PAD: _bindgen_ty_176 = 9;
pub const TCA_DUMP_INVISIBLE: _bindgen_ty_174 = 10; pub const TCA_DUMP_INVISIBLE: _bindgen_ty_176 = 10;
pub const TCA_CHAIN: _bindgen_ty_174 = 11; pub const TCA_CHAIN: _bindgen_ty_176 = 11;
pub const TCA_HW_OFFLOAD: _bindgen_ty_174 = 12; pub const TCA_HW_OFFLOAD: _bindgen_ty_176 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_174 = 13; pub const TCA_INGRESS_BLOCK: _bindgen_ty_176 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_174 = 14; pub const TCA_EGRESS_BLOCK: _bindgen_ty_176 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_174 = 15; pub const TCA_DUMP_FLAGS: _bindgen_ty_176 = 15;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_174 = 16; pub const TCA_EXT_WARN_MSG: _bindgen_ty_176 = 16;
pub const __TCA_MAX: _bindgen_ty_174 = 17; pub const __TCA_MAX: _bindgen_ty_176 = 17;
pub type _bindgen_ty_174 = ::core::ffi::c_uint; pub type _bindgen_ty_176 = ::core::ffi::c_uint;

@ -2105,6 +2105,22 @@ pub struct btf_var_secinfo {
pub struct btf_decl_tag { pub struct btf_decl_tag {
pub component_idx: __s32, pub component_idx: __s32,
} }
pub const HW_BREAKPOINT_LEN_1: _bindgen_ty_44 = 1;
pub const HW_BREAKPOINT_LEN_2: _bindgen_ty_44 = 2;
pub const HW_BREAKPOINT_LEN_3: _bindgen_ty_44 = 3;
pub const HW_BREAKPOINT_LEN_4: _bindgen_ty_44 = 4;
pub const HW_BREAKPOINT_LEN_5: _bindgen_ty_44 = 5;
pub const HW_BREAKPOINT_LEN_6: _bindgen_ty_44 = 6;
pub const HW_BREAKPOINT_LEN_7: _bindgen_ty_44 = 7;
pub const HW_BREAKPOINT_LEN_8: _bindgen_ty_44 = 8;
pub type _bindgen_ty_44 = ::core::ffi::c_uint;
pub const HW_BREAKPOINT_EMPTY: _bindgen_ty_45 = 0;
pub const HW_BREAKPOINT_R: _bindgen_ty_45 = 1;
pub const HW_BREAKPOINT_W: _bindgen_ty_45 = 2;
pub const HW_BREAKPOINT_RW: _bindgen_ty_45 = 3;
pub const HW_BREAKPOINT_X: _bindgen_ty_45 = 4;
pub const HW_BREAKPOINT_INVALID: _bindgen_ty_45 = 7;
pub type _bindgen_ty_45 = ::core::ffi::c_uint;
impl nlmsgerr_attrs { impl nlmsgerr_attrs {
pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE; pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE;
} }
@ -2117,17 +2133,17 @@ pub enum nlmsgerr_attrs {
NLMSGERR_ATTR_COOKIE = 3, NLMSGERR_ATTR_COOKIE = 3,
__NLMSGERR_ATTR_MAX = 4, __NLMSGERR_ATTR_MAX = 4,
} }
pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0; pub const IFLA_XDP_UNSPEC: _bindgen_ty_94 = 0;
pub const IFLA_XDP_FD: _bindgen_ty_92 = 1; pub const IFLA_XDP_FD: _bindgen_ty_94 = 1;
pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2; pub const IFLA_XDP_ATTACHED: _bindgen_ty_94 = 2;
pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3; pub const IFLA_XDP_FLAGS: _bindgen_ty_94 = 3;
pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4; pub const IFLA_XDP_PROG_ID: _bindgen_ty_94 = 4;
pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5; pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_94 = 5;
pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6; pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_94 = 6;
pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7; pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_94 = 7;
pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8; pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_94 = 8;
pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9; pub const __IFLA_XDP_MAX: _bindgen_ty_94 = 9;
pub type _bindgen_ty_92 = ::core::ffi::c_uint; pub type _bindgen_ty_94 = ::core::ffi::c_uint;
impl nf_inet_hooks { impl nf_inet_hooks {
pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS; pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
} }
@ -2141,16 +2157,16 @@ pub enum nf_inet_hooks {
NF_INET_POST_ROUTING = 4, NF_INET_POST_ROUTING = 4,
NF_INET_NUMHOOKS = 5, NF_INET_NUMHOOKS = 5,
} }
pub const NFPROTO_UNSPEC: _bindgen_ty_99 = 0; pub const NFPROTO_UNSPEC: _bindgen_ty_101 = 0;
pub const NFPROTO_INET: _bindgen_ty_99 = 1; pub const NFPROTO_INET: _bindgen_ty_101 = 1;
pub const NFPROTO_IPV4: _bindgen_ty_99 = 2; pub const NFPROTO_IPV4: _bindgen_ty_101 = 2;
pub const NFPROTO_ARP: _bindgen_ty_99 = 3; pub const NFPROTO_ARP: _bindgen_ty_101 = 3;
pub const NFPROTO_NETDEV: _bindgen_ty_99 = 5; pub const NFPROTO_NETDEV: _bindgen_ty_101 = 5;
pub const NFPROTO_BRIDGE: _bindgen_ty_99 = 7; pub const NFPROTO_BRIDGE: _bindgen_ty_101 = 7;
pub const NFPROTO_IPV6: _bindgen_ty_99 = 10; pub const NFPROTO_IPV6: _bindgen_ty_101 = 10;
pub const NFPROTO_DECNET: _bindgen_ty_99 = 12; pub const NFPROTO_DECNET: _bindgen_ty_101 = 12;
pub const NFPROTO_NUMPROTO: _bindgen_ty_99 = 13; pub const NFPROTO_NUMPROTO: _bindgen_ty_101 = 13;
pub type _bindgen_ty_99 = ::core::ffi::c_uint; pub type _bindgen_ty_101 = ::core::ffi::c_uint;
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id { pub enum perf_type_id {
@ -4111,20 +4127,20 @@ pub enum perf_event_type {
PERF_RECORD_AUX_OUTPUT_HW_ID = 21, PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22, PERF_RECORD_MAX = 22,
} }
pub const TCA_BPF_UNSPEC: _bindgen_ty_154 = 0; pub const TCA_BPF_UNSPEC: _bindgen_ty_156 = 0;
pub const TCA_BPF_ACT: _bindgen_ty_154 = 1; pub const TCA_BPF_ACT: _bindgen_ty_156 = 1;
pub const TCA_BPF_POLICE: _bindgen_ty_154 = 2; pub const TCA_BPF_POLICE: _bindgen_ty_156 = 2;
pub const TCA_BPF_CLASSID: _bindgen_ty_154 = 3; pub const TCA_BPF_CLASSID: _bindgen_ty_156 = 3;
pub const TCA_BPF_OPS_LEN: _bindgen_ty_154 = 4; pub const TCA_BPF_OPS_LEN: _bindgen_ty_156 = 4;
pub const TCA_BPF_OPS: _bindgen_ty_154 = 5; pub const TCA_BPF_OPS: _bindgen_ty_156 = 5;
pub const TCA_BPF_FD: _bindgen_ty_154 = 6; pub const TCA_BPF_FD: _bindgen_ty_156 = 6;
pub const TCA_BPF_NAME: _bindgen_ty_154 = 7; pub const TCA_BPF_NAME: _bindgen_ty_156 = 7;
pub const TCA_BPF_FLAGS: _bindgen_ty_154 = 8; pub const TCA_BPF_FLAGS: _bindgen_ty_156 = 8;
pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_154 = 9; pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_156 = 9;
pub const TCA_BPF_TAG: _bindgen_ty_154 = 10; pub const TCA_BPF_TAG: _bindgen_ty_156 = 10;
pub const TCA_BPF_ID: _bindgen_ty_154 = 11; pub const TCA_BPF_ID: _bindgen_ty_156 = 11;
pub const __TCA_BPF_MAX: _bindgen_ty_154 = 12; pub const __TCA_BPF_MAX: _bindgen_ty_156 = 12;
pub type _bindgen_ty_154 = ::core::ffi::c_uint; pub type _bindgen_ty_156 = ::core::ffi::c_uint;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ifinfomsg { pub struct ifinfomsg {
@ -4146,22 +4162,22 @@ pub struct tcmsg {
pub tcm_parent: __u32, pub tcm_parent: __u32,
pub tcm_info: __u32, pub tcm_info: __u32,
} }
pub const TCA_UNSPEC: _bindgen_ty_174 = 0; pub const TCA_UNSPEC: _bindgen_ty_176 = 0;
pub const TCA_KIND: _bindgen_ty_174 = 1; pub const TCA_KIND: _bindgen_ty_176 = 1;
pub const TCA_OPTIONS: _bindgen_ty_174 = 2; pub const TCA_OPTIONS: _bindgen_ty_176 = 2;
pub const TCA_STATS: _bindgen_ty_174 = 3; pub const TCA_STATS: _bindgen_ty_176 = 3;
pub const TCA_XSTATS: _bindgen_ty_174 = 4; pub const TCA_XSTATS: _bindgen_ty_176 = 4;
pub const TCA_RATE: _bindgen_ty_174 = 5; pub const TCA_RATE: _bindgen_ty_176 = 5;
pub const TCA_FCNT: _bindgen_ty_174 = 6; pub const TCA_FCNT: _bindgen_ty_176 = 6;
pub const TCA_STATS2: _bindgen_ty_174 = 7; pub const TCA_STATS2: _bindgen_ty_176 = 7;
pub const TCA_STAB: _bindgen_ty_174 = 8; pub const TCA_STAB: _bindgen_ty_176 = 8;
pub const TCA_PAD: _bindgen_ty_174 = 9; pub const TCA_PAD: _bindgen_ty_176 = 9;
pub const TCA_DUMP_INVISIBLE: _bindgen_ty_174 = 10; pub const TCA_DUMP_INVISIBLE: _bindgen_ty_176 = 10;
pub const TCA_CHAIN: _bindgen_ty_174 = 11; pub const TCA_CHAIN: _bindgen_ty_176 = 11;
pub const TCA_HW_OFFLOAD: _bindgen_ty_174 = 12; pub const TCA_HW_OFFLOAD: _bindgen_ty_176 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_174 = 13; pub const TCA_INGRESS_BLOCK: _bindgen_ty_176 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_174 = 14; pub const TCA_EGRESS_BLOCK: _bindgen_ty_176 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_174 = 15; pub const TCA_DUMP_FLAGS: _bindgen_ty_176 = 15;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_174 = 16; pub const TCA_EXT_WARN_MSG: _bindgen_ty_176 = 16;
pub const __TCA_MAX: _bindgen_ty_174 = 17; pub const __TCA_MAX: _bindgen_ty_176 = 17;
pub type _bindgen_ty_174 = ::core::ffi::c_uint; pub type _bindgen_ty_176 = ::core::ffi::c_uint;

@ -2105,6 +2105,22 @@ pub struct btf_var_secinfo {
pub struct btf_decl_tag { pub struct btf_decl_tag {
pub component_idx: __s32, pub component_idx: __s32,
} }
pub const HW_BREAKPOINT_LEN_1: _bindgen_ty_44 = 1;
pub const HW_BREAKPOINT_LEN_2: _bindgen_ty_44 = 2;
pub const HW_BREAKPOINT_LEN_3: _bindgen_ty_44 = 3;
pub const HW_BREAKPOINT_LEN_4: _bindgen_ty_44 = 4;
pub const HW_BREAKPOINT_LEN_5: _bindgen_ty_44 = 5;
pub const HW_BREAKPOINT_LEN_6: _bindgen_ty_44 = 6;
pub const HW_BREAKPOINT_LEN_7: _bindgen_ty_44 = 7;
pub const HW_BREAKPOINT_LEN_8: _bindgen_ty_44 = 8;
pub type _bindgen_ty_44 = ::core::ffi::c_uint;
pub const HW_BREAKPOINT_EMPTY: _bindgen_ty_45 = 0;
pub const HW_BREAKPOINT_R: _bindgen_ty_45 = 1;
pub const HW_BREAKPOINT_W: _bindgen_ty_45 = 2;
pub const HW_BREAKPOINT_RW: _bindgen_ty_45 = 3;
pub const HW_BREAKPOINT_X: _bindgen_ty_45 = 4;
pub const HW_BREAKPOINT_INVALID: _bindgen_ty_45 = 7;
pub type _bindgen_ty_45 = ::core::ffi::c_uint;
impl nlmsgerr_attrs { impl nlmsgerr_attrs {
pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE; pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_COOKIE;
} }
@ -2117,17 +2133,17 @@ pub enum nlmsgerr_attrs {
NLMSGERR_ATTR_COOKIE = 3, NLMSGERR_ATTR_COOKIE = 3,
__NLMSGERR_ATTR_MAX = 4, __NLMSGERR_ATTR_MAX = 4,
} }
pub const IFLA_XDP_UNSPEC: _bindgen_ty_92 = 0; pub const IFLA_XDP_UNSPEC: _bindgen_ty_94 = 0;
pub const IFLA_XDP_FD: _bindgen_ty_92 = 1; pub const IFLA_XDP_FD: _bindgen_ty_94 = 1;
pub const IFLA_XDP_ATTACHED: _bindgen_ty_92 = 2; pub const IFLA_XDP_ATTACHED: _bindgen_ty_94 = 2;
pub const IFLA_XDP_FLAGS: _bindgen_ty_92 = 3; pub const IFLA_XDP_FLAGS: _bindgen_ty_94 = 3;
pub const IFLA_XDP_PROG_ID: _bindgen_ty_92 = 4; pub const IFLA_XDP_PROG_ID: _bindgen_ty_94 = 4;
pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_92 = 5; pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_94 = 5;
pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_92 = 6; pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_94 = 6;
pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_92 = 7; pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_94 = 7;
pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_92 = 8; pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_94 = 8;
pub const __IFLA_XDP_MAX: _bindgen_ty_92 = 9; pub const __IFLA_XDP_MAX: _bindgen_ty_94 = 9;
pub type _bindgen_ty_92 = ::core::ffi::c_uint; pub type _bindgen_ty_94 = ::core::ffi::c_uint;
impl nf_inet_hooks { impl nf_inet_hooks {
pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS; pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
} }
@ -2141,16 +2157,16 @@ pub enum nf_inet_hooks {
NF_INET_POST_ROUTING = 4, NF_INET_POST_ROUTING = 4,
NF_INET_NUMHOOKS = 5, NF_INET_NUMHOOKS = 5,
} }
pub const NFPROTO_UNSPEC: _bindgen_ty_99 = 0; pub const NFPROTO_UNSPEC: _bindgen_ty_101 = 0;
pub const NFPROTO_INET: _bindgen_ty_99 = 1; pub const NFPROTO_INET: _bindgen_ty_101 = 1;
pub const NFPROTO_IPV4: _bindgen_ty_99 = 2; pub const NFPROTO_IPV4: _bindgen_ty_101 = 2;
pub const NFPROTO_ARP: _bindgen_ty_99 = 3; pub const NFPROTO_ARP: _bindgen_ty_101 = 3;
pub const NFPROTO_NETDEV: _bindgen_ty_99 = 5; pub const NFPROTO_NETDEV: _bindgen_ty_101 = 5;
pub const NFPROTO_BRIDGE: _bindgen_ty_99 = 7; pub const NFPROTO_BRIDGE: _bindgen_ty_101 = 7;
pub const NFPROTO_IPV6: _bindgen_ty_99 = 10; pub const NFPROTO_IPV6: _bindgen_ty_101 = 10;
pub const NFPROTO_DECNET: _bindgen_ty_99 = 12; pub const NFPROTO_DECNET: _bindgen_ty_101 = 12;
pub const NFPROTO_NUMPROTO: _bindgen_ty_99 = 13; pub const NFPROTO_NUMPROTO: _bindgen_ty_101 = 13;
pub type _bindgen_ty_99 = ::core::ffi::c_uint; pub type _bindgen_ty_101 = ::core::ffi::c_uint;
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum perf_type_id { pub enum perf_type_id {
@ -4111,20 +4127,20 @@ pub enum perf_event_type {
PERF_RECORD_AUX_OUTPUT_HW_ID = 21, PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
PERF_RECORD_MAX = 22, PERF_RECORD_MAX = 22,
} }
pub const TCA_BPF_UNSPEC: _bindgen_ty_154 = 0; pub const TCA_BPF_UNSPEC: _bindgen_ty_156 = 0;
pub const TCA_BPF_ACT: _bindgen_ty_154 = 1; pub const TCA_BPF_ACT: _bindgen_ty_156 = 1;
pub const TCA_BPF_POLICE: _bindgen_ty_154 = 2; pub const TCA_BPF_POLICE: _bindgen_ty_156 = 2;
pub const TCA_BPF_CLASSID: _bindgen_ty_154 = 3; pub const TCA_BPF_CLASSID: _bindgen_ty_156 = 3;
pub const TCA_BPF_OPS_LEN: _bindgen_ty_154 = 4; pub const TCA_BPF_OPS_LEN: _bindgen_ty_156 = 4;
pub const TCA_BPF_OPS: _bindgen_ty_154 = 5; pub const TCA_BPF_OPS: _bindgen_ty_156 = 5;
pub const TCA_BPF_FD: _bindgen_ty_154 = 6; pub const TCA_BPF_FD: _bindgen_ty_156 = 6;
pub const TCA_BPF_NAME: _bindgen_ty_154 = 7; pub const TCA_BPF_NAME: _bindgen_ty_156 = 7;
pub const TCA_BPF_FLAGS: _bindgen_ty_154 = 8; pub const TCA_BPF_FLAGS: _bindgen_ty_156 = 8;
pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_154 = 9; pub const TCA_BPF_FLAGS_GEN: _bindgen_ty_156 = 9;
pub const TCA_BPF_TAG: _bindgen_ty_154 = 10; pub const TCA_BPF_TAG: _bindgen_ty_156 = 10;
pub const TCA_BPF_ID: _bindgen_ty_154 = 11; pub const TCA_BPF_ID: _bindgen_ty_156 = 11;
pub const __TCA_BPF_MAX: _bindgen_ty_154 = 12; pub const __TCA_BPF_MAX: _bindgen_ty_156 = 12;
pub type _bindgen_ty_154 = ::core::ffi::c_uint; pub type _bindgen_ty_156 = ::core::ffi::c_uint;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct ifinfomsg { pub struct ifinfomsg {
@ -4146,22 +4162,22 @@ pub struct tcmsg {
pub tcm_parent: __u32, pub tcm_parent: __u32,
pub tcm_info: __u32, pub tcm_info: __u32,
} }
pub const TCA_UNSPEC: _bindgen_ty_174 = 0; pub const TCA_UNSPEC: _bindgen_ty_176 = 0;
pub const TCA_KIND: _bindgen_ty_174 = 1; pub const TCA_KIND: _bindgen_ty_176 = 1;
pub const TCA_OPTIONS: _bindgen_ty_174 = 2; pub const TCA_OPTIONS: _bindgen_ty_176 = 2;
pub const TCA_STATS: _bindgen_ty_174 = 3; pub const TCA_STATS: _bindgen_ty_176 = 3;
pub const TCA_XSTATS: _bindgen_ty_174 = 4; pub const TCA_XSTATS: _bindgen_ty_176 = 4;
pub const TCA_RATE: _bindgen_ty_174 = 5; pub const TCA_RATE: _bindgen_ty_176 = 5;
pub const TCA_FCNT: _bindgen_ty_174 = 6; pub const TCA_FCNT: _bindgen_ty_176 = 6;
pub const TCA_STATS2: _bindgen_ty_174 = 7; pub const TCA_STATS2: _bindgen_ty_176 = 7;
pub const TCA_STAB: _bindgen_ty_174 = 8; pub const TCA_STAB: _bindgen_ty_176 = 8;
pub const TCA_PAD: _bindgen_ty_174 = 9; pub const TCA_PAD: _bindgen_ty_176 = 9;
pub const TCA_DUMP_INVISIBLE: _bindgen_ty_174 = 10; pub const TCA_DUMP_INVISIBLE: _bindgen_ty_176 = 10;
pub const TCA_CHAIN: _bindgen_ty_174 = 11; pub const TCA_CHAIN: _bindgen_ty_176 = 11;
pub const TCA_HW_OFFLOAD: _bindgen_ty_174 = 12; pub const TCA_HW_OFFLOAD: _bindgen_ty_176 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_174 = 13; pub const TCA_INGRESS_BLOCK: _bindgen_ty_176 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_174 = 14; pub const TCA_EGRESS_BLOCK: _bindgen_ty_176 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_174 = 15; pub const TCA_DUMP_FLAGS: _bindgen_ty_176 = 15;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_174 = 16; pub const TCA_EXT_WARN_MSG: _bindgen_ty_176 = 16;
pub const __TCA_MAX: _bindgen_ty_174 = 17; pub const __TCA_MAX: _bindgen_ty_176 = 17;
pub type _bindgen_ty_174 = ::core::ffi::c_uint; pub type _bindgen_ty_176 = ::core::ffi::c_uint;

@ -236,6 +236,10 @@ pub enum ProgramError {
/// An error occurred while working with Netlink. /// An error occurred while working with Netlink.
#[error(transparent)] #[error(transparent)]
NetlinkError(#[from] NetlinkError), NetlinkError(#[from] NetlinkError),
/// The perf event breakpoint is underspecified
#[error("the breakpoint description is missing or incomplete")]
IncompleteBreakpoint,
} }
/// A [`Program`] file descriptor. /// A [`Program`] file descriptor.

@ -3,7 +3,10 @@
use std::os::fd::AsFd as _; use std::os::fd::AsFd as _;
use aya_obj::generated::{ use aya_obj::generated::{
bpf_link_type, HW_BREAKPOINT_EMPTY, HW_BREAKPOINT_INVALID, HW_BREAKPOINT_LEN_1, HW_BREAKPOINT_LEN_2,
HW_BREAKPOINT_LEN_3, HW_BREAKPOINT_LEN_4, HW_BREAKPOINT_LEN_5, HW_BREAKPOINT_LEN_6,
HW_BREAKPOINT_LEN_7, HW_BREAKPOINT_LEN_8, HW_BREAKPOINT_R, HW_BREAKPOINT_RW, HW_BREAKPOINT_W,
HW_BREAKPOINT_X, bpf_link_type,
bpf_prog_type::BPF_PROG_TYPE_PERF_EVENT, bpf_prog_type::BPF_PROG_TYPE_PERF_EVENT,
perf_type_id::{ perf_type_id::{
PERF_TYPE_BREAKPOINT, PERF_TYPE_HARDWARE, PERF_TYPE_HW_CACHE, PERF_TYPE_RAW, PERF_TYPE_BREAKPOINT, PERF_TYPE_HARDWARE, PERF_TYPE_HW_CACHE, PERF_TYPE_RAW,
@ -18,7 +21,7 @@ use crate::{
programs::{ programs::{
FdLink, LinkError, ProgramData, ProgramError, ProgramType, impl_try_into_fdlink, FdLink, LinkError, ProgramData, ProgramError, ProgramType, impl_try_into_fdlink,
links::define_link_wrapper, links::define_link_wrapper,
load_program, perf_attach, load_program,
perf_attach::{PerfLinkIdInner, PerfLinkInner}, perf_attach::{PerfLinkIdInner, PerfLinkInner},
}, },
sys::{SyscallError, bpf_link_get_info_by_fd, perf_event_open}, sys::{SyscallError, bpf_link_get_info_by_fd, perf_event_open},
@ -26,7 +29,7 @@ use crate::{
/// The type of perf event /// The type of perf event
#[repr(u32)] #[repr(u32)]
#[derive(Debug, Clone)] #[derive(Debug, Clone, Copy)]
pub enum PerfTypeId { pub enum PerfTypeId {
/// PERF_TYPE_HARDWARE /// PERF_TYPE_HARDWARE
Hardware = PERF_TYPE_HARDWARE as u32, Hardware = PERF_TYPE_HARDWARE as u32,
@ -41,6 +44,58 @@ pub enum PerfTypeId {
/// PERF_TYPE_BREAKPOINT /// PERF_TYPE_BREAKPOINT
Breakpoint = PERF_TYPE_BREAKPOINT as u32, Breakpoint = PERF_TYPE_BREAKPOINT as u32,
} }
/// A hardware breakpoint configuration
#[derive(Debug, Clone)]
pub struct PerfBreakpoint {
/// The address to set the breakpoint on
pub address: u64,
/// The breakpoint size. For HwBreakpointX this must be sizeof(long). For
/// all other types it should be one of HwBreakpointLen1, HwBreakpointLen2,,
/// HwBreakpointLen4 or HwBreakpointLen8.
pub length: PerfBreakpointSize,
/// The breakpoint type, one of HW_BREAKPOINT_{R,W,RW,X}
pub type_: PerfBreakpointType,
}
/// Type of hardware breakpoint, determines if we break on read, write, or execute.
#[repr(u32)]
#[derive(Debug, Clone, Copy)]
pub enum PerfBreakpointType {
/// HW_BREAKPOINT_EMPTY
HwBreakpointEmpty = HW_BREAKPOINT_EMPTY,
/// HW_BREAKPOINT_R
HwBreakpointR = HW_BREAKPOINT_R,
/// HW_BREAKPOINT_W
HwBreakpointW = HW_BREAKPOINT_W,
/// HW_BREAKPOINT_RW
HwBreakpointRW = HW_BREAKPOINT_RW,
/// HW_BREAKPOINT_X
HwBreakpointX = HW_BREAKPOINT_X,
/// HW_BREAKPOINT_INVALID
HwBreakpointInvalid = HW_BREAKPOINT_INVALID,
}
/// The size of the breakpoint being measured
#[repr(u32)]
#[derive(Debug, Clone, Copy)]
pub enum PerfBreakpointSize {
/// HW_BREAKPOINT_LEN_1
HwBreakpointLen1 = HW_BREAKPOINT_LEN_1,
/// HW_BREAKPOINT_LEN_2
HwBreakpointLen2 = HW_BREAKPOINT_LEN_2,
/// HW_BREAKPOINT_LEN_3
HwBreakpointLen3 = HW_BREAKPOINT_LEN_3,
/// HW_BREAKPOINT_LEN_4
HwBreakpointLen4 = HW_BREAKPOINT_LEN_4,
/// HW_BREAKPOINT_LEN_5
HwBreakpointLen5 = HW_BREAKPOINT_LEN_5,
/// HW_BREAKPOINT_LEN_6
HwBreakpointLen6 = HW_BREAKPOINT_LEN_6,
/// HW_BREAKPOINT_LEN_7
HwBreakpointLen7 = HW_BREAKPOINT_LEN_7,
/// HW_BREAKPOINT_LEN_8
HwBreakpointLen8 = HW_BREAKPOINT_LEN_8,
}
/// Sample Policy /// Sample Policy
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -116,6 +171,7 @@ pub enum PerfEventScope {
/// PerfEventScope::AllProcessesOneCpu { cpu }, /// PerfEventScope::AllProcessesOneCpu { cpu },
/// SamplePolicy::Period(1000000), /// SamplePolicy::Period(1000000),
/// true, /// true,
/// None
/// )?; /// )?;
/// } /// }
/// # Ok::<(), Error>(()) /// # Ok::<(), Error>(())
@ -141,9 +197,11 @@ impl PerfEvent {
/// `perf_type`. See `perf_sw_ids`, `perf_hw_id`, `perf_hw_cache_id`, /// `perf_type`. See `perf_sw_ids`, `perf_hw_id`, `perf_hw_cache_id`,
/// `perf_hw_cache_op_id` and `perf_hw_cache_op_result_id`. /// `perf_hw_cache_op_id` and `perf_hw_cache_op_result_id`.
/// ///
/// The `scope` argument determines which processes are sampled. If `inherit` /// The `bp` option must be specified if `perf_type` is `Breakpoint`.
/// is true, any new processes spawned by those processes will also ///
/// automatically get sampled. /// The `scope` argument determines which processes are sampled. If
/// `inherit` is true, any new processes spawned by those processes will
/// also automatically get sampled.
/// ///
/// The returned value can be used to detach, see [PerfEvent::detach]. /// The returned value can be used to detach, see [PerfEvent::detach].
pub fn attach( pub fn attach(
@ -153,7 +211,11 @@ impl PerfEvent {
scope: PerfEventScope, scope: PerfEventScope,
sample_policy: SamplePolicy, sample_policy: SamplePolicy,
inherit: bool, inherit: bool,
bp: Option<PerfBreakpoint>,
) -> Result<PerfEventLinkId, ProgramError> { ) -> Result<PerfEventLinkId, ProgramError> {
if matches!(perf_type, PerfTypeId::Breakpoint) && bp.is_none() {
return Err(ProgramError::IncompleteBreakpoint);
}
let prog_fd = self.fd()?; let prog_fd = self.fd()?;
let prog_fd = prog_fd.as_fd(); let prog_fd = prog_fd.as_fd();
let (sample_period, sample_frequency) = match sample_policy { let (sample_period, sample_frequency) = match sample_policy {
@ -174,16 +236,17 @@ impl PerfEvent {
cpu, cpu,
sample_period, sample_period,
sample_frequency, sample_frequency,
false, matches!(perf_type, PerfTypeId::Breakpoint),
inherit, inherit,
0, 0,
bp,
) )
.map_err(|io_error| SyscallError { .map_err(|io_error| SyscallError {
call: "perf_event_open", call: "perf_event_open",
io_error, io_error,
})?; })?;
let link = perf_attach(prog_fd, fd, None /* cookie */)?; let link = crate::programs::perf_attach(prog_fd, fd, None /* cookie */)?;
self.data.links.insert(PerfEventLink::new(link)) self.data.links.insert(PerfEventLink::new(link))
} }
} }

@ -13,6 +13,7 @@ use aya_obj::generated::{
use libc::pid_t; use libc::pid_t;
use super::{PerfEventIoctlRequest, Syscall, syscall}; use super::{PerfEventIoctlRequest, Syscall, syscall};
use crate::programs::{PerfTypeId, perf_event::PerfBreakpoint};
#[expect(clippy::too_many_arguments)] #[expect(clippy::too_many_arguments)]
pub(crate) fn perf_event_open( pub(crate) fn perf_event_open(
@ -25,6 +26,7 @@ pub(crate) fn perf_event_open(
wakeup: bool, wakeup: bool,
inherit: bool, inherit: bool,
flags: u32, flags: u32,
bp: Option<PerfBreakpoint>,
) -> io::Result<crate::MockableFd> { ) -> io::Result<crate::MockableFd> {
let mut attr = unsafe { mem::zeroed::<perf_event_attr>() }; let mut attr = unsafe { mem::zeroed::<perf_event_attr>() };
@ -42,6 +44,20 @@ pub(crate) fn perf_event_open(
attr.__bindgen_anon_1.sample_period = sample_period; attr.__bindgen_anon_1.sample_period = sample_period;
} }
if perf_type == (PerfTypeId::Breakpoint as u32) {
if let Some(bp) = bp {
attr.bp_type = bp.type_ as u32;
attr.__bindgen_anon_3.bp_addr = bp.address;
attr.__bindgen_anon_4.bp_len = bp.length as u64;
attr.set_precise_ip(2);
} else {
return Err(io::Error::new(
io::ErrorKind::InvalidInput,
"perf_type Breakpoint requires a PerfBreakpoint",
));
}
}
perf_event_sys(attr, pid, cpu, flags) perf_event_sys(attr, pid, cpu, flags)
} }
@ -56,6 +72,7 @@ pub(crate) fn perf_event_open_bpf(cpu: c_int) -> io::Result<crate::MockableFd> {
true, true,
false, false,
PERF_FLAG_FD_CLOEXEC, PERF_FLAG_FD_CLOEXEC,
None,
) )
} }

@ -6,6 +6,7 @@ typedef __u32 __bitwise __wsum;
#include <bpf/bpf_helpers.h> #include <bpf/bpf_helpers.h>
#include <linux/bpf.h> #include <linux/bpf.h>
#include <linux/bpf_perf_event.h>
// needed for TC_ACT_* // needed for TC_ACT_*
#include <linux/pkt_cls.h> #include <linux/pkt_cls.h>
#include <linux/ptrace.h> #include <linux/ptrace.h>

@ -365,11 +365,6 @@ pub type __be32 = __u32;
pub type __wsum = __u32; pub type __wsum = __u32;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct linux_binprm { pub struct linux_binprm {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -2887,6 +2882,14 @@ pub struct user_pt_regs {
pub pc: __u64, pub pc: __u64,
pub pstate: __u64, pub pstate: __u64,
} }
pub type bpf_user_pt_regs_t = user_pt_regs;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
pub regs: bpf_user_pt_regs_t,
pub sample_period: __u64,
pub addr: __u64,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort; pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]

@ -365,11 +365,6 @@ pub type __be32 = __u32;
pub type __wsum = __u32; pub type __wsum = __u32;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct linux_binprm { pub struct linux_binprm {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -2896,6 +2891,14 @@ pub struct bpf_iter_num {
pub struct pt_regs { pub struct pt_regs {
pub uregs: [::aya_ebpf_cty::c_long; 18usize], pub uregs: [::aya_ebpf_cty::c_long; 18usize],
} }
pub type bpf_user_pt_regs_t = pt_regs;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
pub regs: bpf_user_pt_regs_t,
pub sample_period: __u64,
pub addr: __u64,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort; pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]

@ -365,11 +365,6 @@ pub type __be32 = __u32;
pub type __wsum = __u32; pub type __wsum = __u32;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct linux_binprm { pub struct linux_binprm {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -2888,6 +2883,14 @@ pub struct user_pt_regs {
pub csr_badv: ::aya_ebpf_cty::c_ulong, pub csr_badv: ::aya_ebpf_cty::c_ulong,
pub reserved: [::aya_ebpf_cty::c_ulong; 10usize], pub reserved: [::aya_ebpf_cty::c_ulong; 10usize],
} }
pub type bpf_user_pt_regs_t = user_pt_regs;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
pub regs: bpf_user_pt_regs_t,
pub sample_period: __u64,
pub addr: __u64,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort; pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]

@ -366,11 +366,6 @@ pub type __be32 = __u32;
pub type __wsum = __u32; pub type __wsum = __u32;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct linux_binprm { pub struct linux_binprm {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -2903,6 +2898,14 @@ pub struct pt_regs {
pub cp0_status: __u64, pub cp0_status: __u64,
pub cp0_cause: __u64, pub cp0_cause: __u64,
} }
pub type bpf_user_pt_regs_t = pt_regs;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
pub regs: bpf_user_pt_regs_t,
pub sample_period: __u64,
pub addr: __u64,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort; pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]

@ -365,11 +365,6 @@ pub type __be32 = __u32;
pub type __wsum = __u32; pub type __wsum = __u32;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct linux_binprm { pub struct linux_binprm {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -2891,6 +2886,14 @@ pub struct pt_regs {
pub dsisr: ::aya_ebpf_cty::c_ulong, pub dsisr: ::aya_ebpf_cty::c_ulong,
pub result: ::aya_ebpf_cty::c_ulong, pub result: ::aya_ebpf_cty::c_ulong,
} }
pub type bpf_user_pt_regs_t = pt_regs;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
pub regs: bpf_user_pt_regs_t,
pub sample_period: __u64,
pub addr: __u64,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort; pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]

@ -365,11 +365,6 @@ pub type __be32 = __u32;
pub type __wsum = __u32; pub type __wsum = __u32;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct linux_binprm { pub struct linux_binprm {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -2915,6 +2910,14 @@ pub struct user_regs_struct {
pub t5: ::aya_ebpf_cty::c_ulong, pub t5: ::aya_ebpf_cty::c_ulong,
pub t6: ::aya_ebpf_cty::c_ulong, pub t6: ::aya_ebpf_cty::c_ulong,
} }
pub type bpf_user_pt_regs_t = user_regs_struct;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
pub regs: bpf_user_pt_regs_t,
pub sample_period: __u64,
pub addr: __u64,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort; pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]

@ -365,11 +365,6 @@ pub type __be32 = __u32;
pub type __wsum = __u32; pub type __wsum = __u32;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct linux_binprm { pub struct linux_binprm {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -3848,6 +3843,14 @@ pub struct user_regs_struct {
pub per_info: per_struct, pub per_info: per_struct,
pub ieee_instruction_pointer: ::aya_ebpf_cty::c_ulong, pub ieee_instruction_pointer: ::aya_ebpf_cty::c_ulong,
} }
pub type bpf_user_pt_regs_t = user_pt_regs;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
pub regs: bpf_user_pt_regs_t,
pub sample_period: __u64,
pub addr: __u64,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort; pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]

@ -365,11 +365,6 @@ pub type __be32 = __u32;
pub type __wsum = __u32; pub type __wsum = __u32;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct linux_binprm { pub struct linux_binprm {
_unused: [u8; 0], _unused: [u8; 0],
} }
@ -2899,6 +2894,14 @@ pub struct pt_regs {
pub rsp: ::aya_ebpf_cty::c_ulong, pub rsp: ::aya_ebpf_cty::c_ulong,
pub ss: ::aya_ebpf_cty::c_ulong, pub ss: ::aya_ebpf_cty::c_ulong,
} }
pub type bpf_user_pt_regs_t = pt_regs;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_perf_event_data {
pub regs: bpf_user_pt_regs_t,
pub sample_period: __u64,
pub addr: __u64,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort; pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]

@ -1,19 +1,21 @@
use core::ffi::c_void; use core::ffi::c_void;
use aya_ebpf_bindings::bindings::bpf_perf_event_data;
use crate::EbpfContext; use crate::EbpfContext;
pub struct PerfEventContext { pub struct PerfEventContext {
ctx: *mut c_void, pub ctx: *mut bpf_perf_event_data,
} }
impl PerfEventContext { impl PerfEventContext {
pub fn new(ctx: *mut c_void) -> Self { pub fn new(ctx: *mut c_void) -> Self {
Self { ctx } Self { ctx: ctx.cast() }
} }
} }
impl EbpfContext for PerfEventContext { impl EbpfContext for PerfEventContext {
fn as_ptr(&self) -> *mut c_void { fn as_ptr(&self) -> *mut c_void {
self.ctx self.ctx.cast()
} }
} }

@ -4972,6 +4972,9 @@ pub unsafe fn aya_ebpf_bindings::bindings::bpf_map_info::clone_to_uninit(&self,
impl<T> core::convert::From<T> for aya_ebpf_bindings::bindings::bpf_map_info impl<T> core::convert::From<T> for aya_ebpf_bindings::bindings::bpf_map_info
pub fn aya_ebpf_bindings::bindings::bpf_map_info::from(t: T) -> T pub fn aya_ebpf_bindings::bindings::bpf_map_info::from(t: T) -> T
#[repr(C)] pub struct aya_ebpf_bindings::bindings::bpf_perf_event_data #[repr(C)] pub struct aya_ebpf_bindings::bindings::bpf_perf_event_data
pub aya_ebpf_bindings::bindings::bpf_perf_event_data::addr: aya_ebpf_bindings::bindings::__u64
pub aya_ebpf_bindings::bindings::bpf_perf_event_data::regs: aya_ebpf_bindings::bindings::bpf_user_pt_regs_t
pub aya_ebpf_bindings::bindings::bpf_perf_event_data::sample_period: aya_ebpf_bindings::bindings::__u64
impl core::clone::Clone for aya_ebpf_bindings::bindings::bpf_perf_event_data impl core::clone::Clone for aya_ebpf_bindings::bindings::bpf_perf_event_data
pub fn aya_ebpf_bindings::bindings::bpf_perf_event_data::clone(&self) -> aya_ebpf_bindings::bindings::bpf_perf_event_data pub fn aya_ebpf_bindings::bindings::bpf_perf_event_data::clone(&self) -> aya_ebpf_bindings::bindings::bpf_perf_event_data
impl core::fmt::Debug for aya_ebpf_bindings::bindings::bpf_perf_event_data impl core::fmt::Debug for aya_ebpf_bindings::bindings::bpf_perf_event_data
@ -7057,6 +7060,7 @@ pub type aya_ebpf_bindings::bindings::_bindgen_ty_6 = aya_ebpf_cty::ad::c_uint
pub type aya_ebpf_bindings::bindings::_bindgen_ty_7 = aya_ebpf_cty::ad::c_uint pub type aya_ebpf_bindings::bindings::_bindgen_ty_7 = aya_ebpf_cty::ad::c_uint
pub type aya_ebpf_bindings::bindings::_bindgen_ty_8 = aya_ebpf_cty::ad::c_uint pub type aya_ebpf_bindings::bindings::_bindgen_ty_8 = aya_ebpf_cty::ad::c_uint
pub type aya_ebpf_bindings::bindings::_bindgen_ty_9 = aya_ebpf_cty::ad::c_uint pub type aya_ebpf_bindings::bindings::_bindgen_ty_9 = aya_ebpf_cty::ad::c_uint
pub type aya_ebpf_bindings::bindings::bpf_user_pt_regs_t = aya_ebpf_bindings::bindings::pt_regs
pub type aya_ebpf_bindings::bindings::sa_family_t = aya_ebpf_cty::c_ushort pub type aya_ebpf_bindings::bindings::sa_family_t = aya_ebpf_cty::c_ushort
pub mod aya_ebpf_bindings::helpers pub mod aya_ebpf_bindings::helpers
pub unsafe fn aya_ebpf_bindings::helpers::bpf_bind(ctx: *mut aya_ebpf_bindings::bindings::bpf_sock_addr, addr: *mut aya_ebpf_bindings::bindings::sockaddr, addr_len: aya_ebpf_cty::ad::c_int) -> aya_ebpf_cty::od::c_long pub unsafe fn aya_ebpf_bindings::helpers::bpf_bind(ctx: *mut aya_ebpf_bindings::bindings::bpf_sock_addr, addr: *mut aya_ebpf_bindings::bindings::sockaddr, addr_len: aya_ebpf_cty::ad::c_int) -> aya_ebpf_cty::od::c_long

@ -1721,6 +1721,7 @@ impl<T> core::convert::From<T> for aya_ebpf::programs::lsm::LsmContext
pub fn aya_ebpf::programs::lsm::LsmContext::from(t: T) -> T pub fn aya_ebpf::programs::lsm::LsmContext::from(t: T) -> T
pub mod aya_ebpf::programs::perf_event pub mod aya_ebpf::programs::perf_event
pub struct aya_ebpf::programs::perf_event::PerfEventContext pub struct aya_ebpf::programs::perf_event::PerfEventContext
pub aya_ebpf::programs::perf_event::PerfEventContext::ctx: *mut aya_ebpf_bindings::x86_64::bindings::bpf_perf_event_data
impl aya_ebpf::programs::perf_event::PerfEventContext impl aya_ebpf::programs::perf_event::PerfEventContext
pub fn aya_ebpf::programs::perf_event::PerfEventContext::new(ctx: *mut core::ffi::c_void) -> Self pub fn aya_ebpf::programs::perf_event::PerfEventContext::new(ctx: *mut core::ffi::c_void) -> Self
impl aya_ebpf::EbpfContext for aya_ebpf::programs::perf_event::PerfEventContext impl aya_ebpf::EbpfContext for aya_ebpf::programs::perf_event::PerfEventContext
@ -2459,6 +2460,7 @@ pub fn aya_ebpf::programs::lsm::LsmContext::borrow_mut(&mut self) -> &mut T
impl<T> core::convert::From<T> for aya_ebpf::programs::lsm::LsmContext impl<T> core::convert::From<T> for aya_ebpf::programs::lsm::LsmContext
pub fn aya_ebpf::programs::lsm::LsmContext::from(t: T) -> T pub fn aya_ebpf::programs::lsm::LsmContext::from(t: T) -> T
pub struct aya_ebpf::programs::PerfEventContext pub struct aya_ebpf::programs::PerfEventContext
pub aya_ebpf::programs::PerfEventContext::ctx: *mut aya_ebpf_bindings::x86_64::bindings::bpf_perf_event_data
impl aya_ebpf::programs::perf_event::PerfEventContext impl aya_ebpf::programs::perf_event::PerfEventContext
pub fn aya_ebpf::programs::perf_event::PerfEventContext::new(ctx: *mut core::ffi::c_void) -> Self pub fn aya_ebpf::programs::perf_event::PerfEventContext::new(ctx: *mut core::ffi::c_void) -> Self
impl aya_ebpf::EbpfContext for aya_ebpf::programs::perf_event::PerfEventContext impl aya_ebpf::EbpfContext for aya_ebpf::programs::perf_event::PerfEventContext

@ -8055,24 +8055,38 @@ pub const aya_obj::generated::BTF_KIND_VOLATILE: aya_obj::generated::_bindgen_ty
pub const aya_obj::generated::BTF_VAR_GLOBAL_ALLOCATED: aya_obj::generated::_bindgen_ty_43 pub const aya_obj::generated::BTF_VAR_GLOBAL_ALLOCATED: aya_obj::generated::_bindgen_ty_43
pub const aya_obj::generated::BTF_VAR_GLOBAL_EXTERN: aya_obj::generated::_bindgen_ty_43 pub const aya_obj::generated::BTF_VAR_GLOBAL_EXTERN: aya_obj::generated::_bindgen_ty_43
pub const aya_obj::generated::BTF_VAR_STATIC: aya_obj::generated::_bindgen_ty_43 pub const aya_obj::generated::BTF_VAR_STATIC: aya_obj::generated::_bindgen_ty_43
pub const aya_obj::generated::IFLA_XDP_ATTACHED: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_EMPTY: aya_obj::generated::_bindgen_ty_45
pub const aya_obj::generated::IFLA_XDP_DRV_PROG_ID: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_INVALID: aya_obj::generated::_bindgen_ty_45
pub const aya_obj::generated::IFLA_XDP_EXPECTED_FD: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_LEN_1: aya_obj::generated::_bindgen_ty_44
pub const aya_obj::generated::IFLA_XDP_FD: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_LEN_2: aya_obj::generated::_bindgen_ty_44
pub const aya_obj::generated::IFLA_XDP_FLAGS: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_LEN_3: aya_obj::generated::_bindgen_ty_44
pub const aya_obj::generated::IFLA_XDP_HW_PROG_ID: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_LEN_4: aya_obj::generated::_bindgen_ty_44
pub const aya_obj::generated::IFLA_XDP_PROG_ID: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_LEN_5: aya_obj::generated::_bindgen_ty_44
pub const aya_obj::generated::IFLA_XDP_SKB_PROG_ID: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_LEN_6: aya_obj::generated::_bindgen_ty_44
pub const aya_obj::generated::IFLA_XDP_UNSPEC: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::HW_BREAKPOINT_LEN_7: aya_obj::generated::_bindgen_ty_44
pub const aya_obj::generated::NFPROTO_ARP: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::HW_BREAKPOINT_LEN_8: aya_obj::generated::_bindgen_ty_44
pub const aya_obj::generated::NFPROTO_BRIDGE: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::HW_BREAKPOINT_R: aya_obj::generated::_bindgen_ty_45
pub const aya_obj::generated::NFPROTO_DECNET: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::HW_BREAKPOINT_RW: aya_obj::generated::_bindgen_ty_45
pub const aya_obj::generated::NFPROTO_INET: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::HW_BREAKPOINT_W: aya_obj::generated::_bindgen_ty_45
pub const aya_obj::generated::NFPROTO_IPV4: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::HW_BREAKPOINT_X: aya_obj::generated::_bindgen_ty_45
pub const aya_obj::generated::NFPROTO_IPV6: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::IFLA_XDP_ATTACHED: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::NFPROTO_NETDEV: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::IFLA_XDP_DRV_PROG_ID: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::NFPROTO_NUMPROTO: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::IFLA_XDP_EXPECTED_FD: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::NFPROTO_UNSPEC: aya_obj::generated::_bindgen_ty_99 pub const aya_obj::generated::IFLA_XDP_FD: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::IFLA_XDP_FLAGS: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::IFLA_XDP_HW_PROG_ID: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::IFLA_XDP_PROG_ID: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::IFLA_XDP_SKB_PROG_ID: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::IFLA_XDP_UNSPEC: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::NFPROTO_ARP: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NFPROTO_BRIDGE: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NFPROTO_DECNET: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NFPROTO_INET: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NFPROTO_IPV4: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NFPROTO_IPV6: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NFPROTO_NETDEV: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NFPROTO_NUMPROTO: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NFPROTO_UNSPEC: aya_obj::generated::_bindgen_ty_101
pub const aya_obj::generated::NLMSG_ALIGNTO: u32 pub const aya_obj::generated::NLMSG_ALIGNTO: u32
pub const aya_obj::generated::NR_BTF_KINDS: aya_obj::generated::_bindgen_ty_42 pub const aya_obj::generated::NR_BTF_KINDS: aya_obj::generated::_bindgen_ty_42
pub const aya_obj::generated::PERF_EVENT_IOC_DISABLE: u32 pub const aya_obj::generated::PERF_EVENT_IOC_DISABLE: u32
@ -8095,36 +8109,36 @@ pub const aya_obj::generated::PERF_MAX_CONTEXTS_PER_STACK: u32
pub const aya_obj::generated::PERF_MAX_STACK_DEPTH: u32 pub const aya_obj::generated::PERF_MAX_STACK_DEPTH: u32
pub const aya_obj::generated::SO_ATTACH_BPF: u32 pub const aya_obj::generated::SO_ATTACH_BPF: u32
pub const aya_obj::generated::SO_DETACH_BPF: u32 pub const aya_obj::generated::SO_DETACH_BPF: u32
pub const aya_obj::generated::TCA_BPF_ACT: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_ACT: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_CLASSID: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_CLASSID: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_FD: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_FD: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_FLAGS: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_FLAGS: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_FLAGS_GEN: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_FLAGS_GEN: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_FLAG_ACT_DIRECT: u32 pub const aya_obj::generated::TCA_BPF_FLAG_ACT_DIRECT: u32
pub const aya_obj::generated::TCA_BPF_ID: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_ID: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_NAME: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_NAME: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_OPS: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_OPS: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_OPS_LEN: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_OPS_LEN: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_POLICE: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_POLICE: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_TAG: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_TAG: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_BPF_UNSPEC: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::TCA_BPF_UNSPEC: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::TCA_CHAIN: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_CHAIN: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_DUMP_FLAGS: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_DUMP_FLAGS: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_DUMP_INVISIBLE: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_DUMP_INVISIBLE: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_EGRESS_BLOCK: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_EGRESS_BLOCK: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_EXT_WARN_MSG: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_EXT_WARN_MSG: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_FCNT: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_FCNT: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_HW_OFFLOAD: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_HW_OFFLOAD: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_INGRESS_BLOCK: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_INGRESS_BLOCK: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_KIND: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_KIND: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_OPTIONS: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_OPTIONS: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_PAD: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_PAD: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_RATE: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_RATE: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_STAB: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_STAB: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_STATS: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_STATS: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_STATS2: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_STATS2: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_UNSPEC: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_UNSPEC: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TCA_XSTATS: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::TCA_XSTATS: aya_obj::generated::_bindgen_ty_176
pub const aya_obj::generated::TC_H_CLSACT: u32 pub const aya_obj::generated::TC_H_CLSACT: u32
pub const aya_obj::generated::TC_H_INGRESS: u32 pub const aya_obj::generated::TC_H_INGRESS: u32
pub const aya_obj::generated::TC_H_MAJ_MASK: u32 pub const aya_obj::generated::TC_H_MAJ_MASK: u32
@ -8141,10 +8155,10 @@ pub const aya_obj::generated::XDP_FLAGS_MODES: u32
pub const aya_obj::generated::XDP_FLAGS_REPLACE: u32 pub const aya_obj::generated::XDP_FLAGS_REPLACE: u32
pub const aya_obj::generated::XDP_FLAGS_SKB_MODE: u32 pub const aya_obj::generated::XDP_FLAGS_SKB_MODE: u32
pub const aya_obj::generated::XDP_FLAGS_UPDATE_IF_NOEXIST: u32 pub const aya_obj::generated::XDP_FLAGS_UPDATE_IF_NOEXIST: u32
pub const aya_obj::generated::__IFLA_XDP_MAX: aya_obj::generated::_bindgen_ty_92 pub const aya_obj::generated::__IFLA_XDP_MAX: aya_obj::generated::_bindgen_ty_94
pub const aya_obj::generated::__MAX_BPF_REG: aya_obj::generated::_bindgen_ty_1 pub const aya_obj::generated::__MAX_BPF_REG: aya_obj::generated::_bindgen_ty_1
pub const aya_obj::generated::__TCA_BPF_MAX: aya_obj::generated::_bindgen_ty_154 pub const aya_obj::generated::__TCA_BPF_MAX: aya_obj::generated::_bindgen_ty_156
pub const aya_obj::generated::__TCA_MAX: aya_obj::generated::_bindgen_ty_174 pub const aya_obj::generated::__TCA_MAX: aya_obj::generated::_bindgen_ty_176
pub type aya_obj::generated::__s16 = core::ffi::primitives::c_short pub type aya_obj::generated::__s16 = core::ffi::primitives::c_short
pub type aya_obj::generated::__s32 = core::ffi::primitives::c_int pub type aya_obj::generated::__s32 = core::ffi::primitives::c_int
pub type aya_obj::generated::__s64 = core::ffi::primitives::c_longlong pub type aya_obj::generated::__s64 = core::ffi::primitives::c_longlong
@ -8153,14 +8167,15 @@ pub type aya_obj::generated::__u32 = core::ffi::primitives::c_uint
pub type aya_obj::generated::__u64 = core::ffi::primitives::c_ulonglong pub type aya_obj::generated::__u64 = core::ffi::primitives::c_ulonglong
pub type aya_obj::generated::__u8 = core::ffi::primitives::c_uchar pub type aya_obj::generated::__u8 = core::ffi::primitives::c_uchar
pub type aya_obj::generated::_bindgen_ty_10 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_10 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_101 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_11 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_11 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_12 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_12 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_13 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_13 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_14 = core::ffi::primitives::c_ulong pub type aya_obj::generated::_bindgen_ty_14 = core::ffi::primitives::c_ulong
pub type aya_obj::generated::_bindgen_ty_15 = core::ffi::primitives::c_int pub type aya_obj::generated::_bindgen_ty_15 = core::ffi::primitives::c_int
pub type aya_obj::generated::_bindgen_ty_154 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_156 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_17 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_17 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_174 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_176 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_19 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_19 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_2 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_2 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_21 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_21 = core::ffi::primitives::c_uint
@ -8172,13 +8187,14 @@ pub type aya_obj::generated::_bindgen_ty_4 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_41 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_41 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_42 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_42 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_43 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_43 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_44 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_45 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_5 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_5 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_6 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_6 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_7 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_7 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_8 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_8 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_9 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_9 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_92 = core::ffi::primitives::c_uint pub type aya_obj::generated::_bindgen_ty_94 = core::ffi::primitives::c_uint
pub type aya_obj::generated::_bindgen_ty_99 = core::ffi::primitives::c_uint
pub mod aya_obj::links pub mod aya_obj::links
pub mod aya_obj::maps pub mod aya_obj::maps
pub enum aya_obj::maps::Map pub enum aya_obj::maps::Map

@ -5298,6 +5298,88 @@ pub use aya::programs::perf_event::perf_hw_cache_op_id
pub use aya::programs::perf_event::perf_hw_cache_op_result_id pub use aya::programs::perf_event::perf_hw_cache_op_result_id
pub use aya::programs::perf_event::perf_hw_id pub use aya::programs::perf_event::perf_hw_id
pub use aya::programs::perf_event::perf_sw_ids pub use aya::programs::perf_event::perf_sw_ids
#[repr(u32)] pub enum aya::programs::perf_event::PerfBreakpointSize
pub aya::programs::perf_event::PerfBreakpointSize::HwBreakpointLen1 = 1
pub aya::programs::perf_event::PerfBreakpointSize::HwBreakpointLen2 = 2
pub aya::programs::perf_event::PerfBreakpointSize::HwBreakpointLen3 = 3
pub aya::programs::perf_event::PerfBreakpointSize::HwBreakpointLen4 = 4
pub aya::programs::perf_event::PerfBreakpointSize::HwBreakpointLen5 = 5
pub aya::programs::perf_event::PerfBreakpointSize::HwBreakpointLen6 = 6
pub aya::programs::perf_event::PerfBreakpointSize::HwBreakpointLen7 = 7
pub aya::programs::perf_event::PerfBreakpointSize::HwBreakpointLen8 = 8
impl core::clone::Clone for aya::programs::perf_event::PerfBreakpointSize
pub fn aya::programs::perf_event::PerfBreakpointSize::clone(&self) -> aya::programs::perf_event::PerfBreakpointSize
impl core::fmt::Debug for aya::programs::perf_event::PerfBreakpointSize
pub fn aya::programs::perf_event::PerfBreakpointSize::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::marker::Copy for aya::programs::perf_event::PerfBreakpointSize
impl core::marker::Freeze for aya::programs::perf_event::PerfBreakpointSize
impl core::marker::Send for aya::programs::perf_event::PerfBreakpointSize
impl core::marker::Sync for aya::programs::perf_event::PerfBreakpointSize
impl core::marker::Unpin for aya::programs::perf_event::PerfBreakpointSize
impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::perf_event::PerfBreakpointSize
impl core::panic::unwind_safe::UnwindSafe for aya::programs::perf_event::PerfBreakpointSize
impl<T, U> core::convert::Into<U> for aya::programs::perf_event::PerfBreakpointSize where U: core::convert::From<T>
pub fn aya::programs::perf_event::PerfBreakpointSize::into(self) -> U
impl<T, U> core::convert::TryFrom<U> for aya::programs::perf_event::PerfBreakpointSize where U: core::convert::Into<T>
pub type aya::programs::perf_event::PerfBreakpointSize::Error = core::convert::Infallible
pub fn aya::programs::perf_event::PerfBreakpointSize::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
impl<T, U> core::convert::TryInto<U> for aya::programs::perf_event::PerfBreakpointSize where U: core::convert::TryFrom<T>
pub type aya::programs::perf_event::PerfBreakpointSize::Error = <U as core::convert::TryFrom<T>>::Error
pub fn aya::programs::perf_event::PerfBreakpointSize::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
impl<T> alloc::borrow::ToOwned for aya::programs::perf_event::PerfBreakpointSize where T: core::clone::Clone
pub type aya::programs::perf_event::PerfBreakpointSize::Owned = T
pub fn aya::programs::perf_event::PerfBreakpointSize::clone_into(&self, target: &mut T)
pub fn aya::programs::perf_event::PerfBreakpointSize::to_owned(&self) -> T
impl<T> core::any::Any for aya::programs::perf_event::PerfBreakpointSize where T: 'static + ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpointSize::type_id(&self) -> core::any::TypeId
impl<T> core::borrow::Borrow<T> for aya::programs::perf_event::PerfBreakpointSize where T: ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpointSize::borrow(&self) -> &T
impl<T> core::borrow::BorrowMut<T> for aya::programs::perf_event::PerfBreakpointSize where T: ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpointSize::borrow_mut(&mut self) -> &mut T
impl<T> core::clone::CloneToUninit for aya::programs::perf_event::PerfBreakpointSize where T: core::clone::Clone
pub unsafe fn aya::programs::perf_event::PerfBreakpointSize::clone_to_uninit(&self, dest: *mut u8)
impl<T> core::convert::From<T> for aya::programs::perf_event::PerfBreakpointSize
pub fn aya::programs::perf_event::PerfBreakpointSize::from(t: T) -> T
#[repr(u32)] pub enum aya::programs::perf_event::PerfBreakpointType
pub aya::programs::perf_event::PerfBreakpointType::HwBreakpointEmpty = 0
pub aya::programs::perf_event::PerfBreakpointType::HwBreakpointInvalid = 7
pub aya::programs::perf_event::PerfBreakpointType::HwBreakpointR = 1
pub aya::programs::perf_event::PerfBreakpointType::HwBreakpointRW = 3
pub aya::programs::perf_event::PerfBreakpointType::HwBreakpointW = 2
pub aya::programs::perf_event::PerfBreakpointType::HwBreakpointX = 4
impl core::clone::Clone for aya::programs::perf_event::PerfBreakpointType
pub fn aya::programs::perf_event::PerfBreakpointType::clone(&self) -> aya::programs::perf_event::PerfBreakpointType
impl core::fmt::Debug for aya::programs::perf_event::PerfBreakpointType
pub fn aya::programs::perf_event::PerfBreakpointType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::marker::Copy for aya::programs::perf_event::PerfBreakpointType
impl core::marker::Freeze for aya::programs::perf_event::PerfBreakpointType
impl core::marker::Send for aya::programs::perf_event::PerfBreakpointType
impl core::marker::Sync for aya::programs::perf_event::PerfBreakpointType
impl core::marker::Unpin for aya::programs::perf_event::PerfBreakpointType
impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::perf_event::PerfBreakpointType
impl core::panic::unwind_safe::UnwindSafe for aya::programs::perf_event::PerfBreakpointType
impl<T, U> core::convert::Into<U> for aya::programs::perf_event::PerfBreakpointType where U: core::convert::From<T>
pub fn aya::programs::perf_event::PerfBreakpointType::into(self) -> U
impl<T, U> core::convert::TryFrom<U> for aya::programs::perf_event::PerfBreakpointType where U: core::convert::Into<T>
pub type aya::programs::perf_event::PerfBreakpointType::Error = core::convert::Infallible
pub fn aya::programs::perf_event::PerfBreakpointType::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
impl<T, U> core::convert::TryInto<U> for aya::programs::perf_event::PerfBreakpointType where U: core::convert::TryFrom<T>
pub type aya::programs::perf_event::PerfBreakpointType::Error = <U as core::convert::TryFrom<T>>::Error
pub fn aya::programs::perf_event::PerfBreakpointType::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
impl<T> alloc::borrow::ToOwned for aya::programs::perf_event::PerfBreakpointType where T: core::clone::Clone
pub type aya::programs::perf_event::PerfBreakpointType::Owned = T
pub fn aya::programs::perf_event::PerfBreakpointType::clone_into(&self, target: &mut T)
pub fn aya::programs::perf_event::PerfBreakpointType::to_owned(&self) -> T
impl<T> core::any::Any for aya::programs::perf_event::PerfBreakpointType where T: 'static + ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpointType::type_id(&self) -> core::any::TypeId
impl<T> core::borrow::Borrow<T> for aya::programs::perf_event::PerfBreakpointType where T: ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpointType::borrow(&self) -> &T
impl<T> core::borrow::BorrowMut<T> for aya::programs::perf_event::PerfBreakpointType where T: ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpointType::borrow_mut(&mut self) -> &mut T
impl<T> core::clone::CloneToUninit for aya::programs::perf_event::PerfBreakpointType where T: core::clone::Clone
pub unsafe fn aya::programs::perf_event::PerfBreakpointType::clone_to_uninit(&self, dest: *mut u8)
impl<T> core::convert::From<T> for aya::programs::perf_event::PerfBreakpointType
pub fn aya::programs::perf_event::PerfBreakpointType::from(t: T) -> T
pub enum aya::programs::perf_event::PerfEventScope pub enum aya::programs::perf_event::PerfEventScope
pub aya::programs::perf_event::PerfEventScope::AllProcessesOneCpu pub aya::programs::perf_event::PerfEventScope::AllProcessesOneCpu
pub aya::programs::perf_event::PerfEventScope::AllProcessesOneCpu::cpu: u32 pub aya::programs::perf_event::PerfEventScope::AllProcessesOneCpu::cpu: u32
@ -5352,6 +5434,7 @@ impl core::clone::Clone for aya::programs::perf_event::PerfTypeId
pub fn aya::programs::perf_event::PerfTypeId::clone(&self) -> aya::programs::perf_event::PerfTypeId pub fn aya::programs::perf_event::PerfTypeId::clone(&self) -> aya::programs::perf_event::PerfTypeId
impl core::fmt::Debug for aya::programs::perf_event::PerfTypeId impl core::fmt::Debug for aya::programs::perf_event::PerfTypeId
pub fn aya::programs::perf_event::PerfTypeId::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn aya::programs::perf_event::PerfTypeId::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::marker::Copy for aya::programs::perf_event::PerfTypeId
impl core::marker::Freeze for aya::programs::perf_event::PerfTypeId impl core::marker::Freeze for aya::programs::perf_event::PerfTypeId
impl core::marker::Send for aya::programs::perf_event::PerfTypeId impl core::marker::Send for aya::programs::perf_event::PerfTypeId
impl core::marker::Sync for aya::programs::perf_event::PerfTypeId impl core::marker::Sync for aya::programs::perf_event::PerfTypeId
@ -5415,10 +5498,46 @@ impl<T> core::clone::CloneToUninit for aya::programs::perf_event::SamplePolicy w
pub unsafe fn aya::programs::perf_event::SamplePolicy::clone_to_uninit(&self, dest: *mut u8) pub unsafe fn aya::programs::perf_event::SamplePolicy::clone_to_uninit(&self, dest: *mut u8)
impl<T> core::convert::From<T> for aya::programs::perf_event::SamplePolicy impl<T> core::convert::From<T> for aya::programs::perf_event::SamplePolicy
pub fn aya::programs::perf_event::SamplePolicy::from(t: T) -> T pub fn aya::programs::perf_event::SamplePolicy::from(t: T) -> T
pub struct aya::programs::perf_event::PerfBreakpoint
pub aya::programs::perf_event::PerfBreakpoint::address: u64
pub aya::programs::perf_event::PerfBreakpoint::length: aya::programs::perf_event::PerfBreakpointSize
pub aya::programs::perf_event::PerfBreakpoint::type_: aya::programs::perf_event::PerfBreakpointType
impl core::clone::Clone for aya::programs::perf_event::PerfBreakpoint
pub fn aya::programs::perf_event::PerfBreakpoint::clone(&self) -> aya::programs::perf_event::PerfBreakpoint
impl core::fmt::Debug for aya::programs::perf_event::PerfBreakpoint
pub fn aya::programs::perf_event::PerfBreakpoint::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::marker::Freeze for aya::programs::perf_event::PerfBreakpoint
impl core::marker::Send for aya::programs::perf_event::PerfBreakpoint
impl core::marker::Sync for aya::programs::perf_event::PerfBreakpoint
impl core::marker::Unpin for aya::programs::perf_event::PerfBreakpoint
impl core::panic::unwind_safe::RefUnwindSafe for aya::programs::perf_event::PerfBreakpoint
impl core::panic::unwind_safe::UnwindSafe for aya::programs::perf_event::PerfBreakpoint
impl<T, U> core::convert::Into<U> for aya::programs::perf_event::PerfBreakpoint where U: core::convert::From<T>
pub fn aya::programs::perf_event::PerfBreakpoint::into(self) -> U
impl<T, U> core::convert::TryFrom<U> for aya::programs::perf_event::PerfBreakpoint where U: core::convert::Into<T>
pub type aya::programs::perf_event::PerfBreakpoint::Error = core::convert::Infallible
pub fn aya::programs::perf_event::PerfBreakpoint::try_from(value: U) -> core::result::Result<T, <T as core::convert::TryFrom<U>>::Error>
impl<T, U> core::convert::TryInto<U> for aya::programs::perf_event::PerfBreakpoint where U: core::convert::TryFrom<T>
pub type aya::programs::perf_event::PerfBreakpoint::Error = <U as core::convert::TryFrom<T>>::Error
pub fn aya::programs::perf_event::PerfBreakpoint::try_into(self) -> core::result::Result<U, <U as core::convert::TryFrom<T>>::Error>
impl<T> alloc::borrow::ToOwned for aya::programs::perf_event::PerfBreakpoint where T: core::clone::Clone
pub type aya::programs::perf_event::PerfBreakpoint::Owned = T
pub fn aya::programs::perf_event::PerfBreakpoint::clone_into(&self, target: &mut T)
pub fn aya::programs::perf_event::PerfBreakpoint::to_owned(&self) -> T
impl<T> core::any::Any for aya::programs::perf_event::PerfBreakpoint where T: 'static + ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpoint::type_id(&self) -> core::any::TypeId
impl<T> core::borrow::Borrow<T> for aya::programs::perf_event::PerfBreakpoint where T: ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpoint::borrow(&self) -> &T
impl<T> core::borrow::BorrowMut<T> for aya::programs::perf_event::PerfBreakpoint where T: ?core::marker::Sized
pub fn aya::programs::perf_event::PerfBreakpoint::borrow_mut(&mut self) -> &mut T
impl<T> core::clone::CloneToUninit for aya::programs::perf_event::PerfBreakpoint where T: core::clone::Clone
pub unsafe fn aya::programs::perf_event::PerfBreakpoint::clone_to_uninit(&self, dest: *mut u8)
impl<T> core::convert::From<T> for aya::programs::perf_event::PerfBreakpoint
pub fn aya::programs::perf_event::PerfBreakpoint::from(t: T) -> T
pub struct aya::programs::perf_event::PerfEvent pub struct aya::programs::perf_event::PerfEvent
impl aya::programs::perf_event::PerfEvent impl aya::programs::perf_event::PerfEvent
pub const aya::programs::perf_event::PerfEvent::PROGRAM_TYPE: aya::programs::ProgramType pub const aya::programs::perf_event::PerfEvent::PROGRAM_TYPE: aya::programs::ProgramType
pub fn aya::programs::perf_event::PerfEvent::attach(&mut self, perf_type: aya::programs::perf_event::PerfTypeId, config: u64, scope: aya::programs::perf_event::PerfEventScope, sample_policy: aya::programs::perf_event::SamplePolicy, inherit: bool) -> core::result::Result<aya::programs::perf_event::PerfEventLinkId, aya::programs::ProgramError> pub fn aya::programs::perf_event::PerfEvent::attach(&mut self, perf_type: aya::programs::perf_event::PerfTypeId, config: u64, scope: aya::programs::perf_event::PerfEventScope, sample_policy: aya::programs::perf_event::SamplePolicy, inherit: bool, bp: core::option::Option<aya::programs::perf_event::PerfBreakpoint>) -> core::result::Result<aya::programs::perf_event::PerfEventLinkId, aya::programs::ProgramError>
pub fn aya::programs::perf_event::PerfEvent::load(&mut self) -> core::result::Result<(), aya::programs::ProgramError> pub fn aya::programs::perf_event::PerfEvent::load(&mut self) -> core::result::Result<(), aya::programs::ProgramError>
impl aya::programs::perf_event::PerfEvent impl aya::programs::perf_event::PerfEvent
pub fn aya::programs::perf_event::PerfEvent::detach(&mut self, link_id: aya::programs::perf_event::PerfEventLinkId) -> core::result::Result<(), aya::programs::ProgramError> pub fn aya::programs::perf_event::PerfEvent::detach(&mut self, link_id: aya::programs::perf_event::PerfEventLinkId) -> core::result::Result<(), aya::programs::ProgramError>
@ -7744,6 +7863,7 @@ impl core::clone::Clone for aya::programs::perf_event::PerfTypeId
pub fn aya::programs::perf_event::PerfTypeId::clone(&self) -> aya::programs::perf_event::PerfTypeId pub fn aya::programs::perf_event::PerfTypeId::clone(&self) -> aya::programs::perf_event::PerfTypeId
impl core::fmt::Debug for aya::programs::perf_event::PerfTypeId impl core::fmt::Debug for aya::programs::perf_event::PerfTypeId
pub fn aya::programs::perf_event::PerfTypeId::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn aya::programs::perf_event::PerfTypeId::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
impl core::marker::Copy for aya::programs::perf_event::PerfTypeId
impl core::marker::Freeze for aya::programs::perf_event::PerfTypeId impl core::marker::Freeze for aya::programs::perf_event::PerfTypeId
impl core::marker::Send for aya::programs::perf_event::PerfTypeId impl core::marker::Send for aya::programs::perf_event::PerfTypeId
impl core::marker::Sync for aya::programs::perf_event::PerfTypeId impl core::marker::Sync for aya::programs::perf_event::PerfTypeId
@ -8037,6 +8157,7 @@ pub aya::programs::ProgramError::AttachCookieNotSupported
pub aya::programs::ProgramError::Btf(aya_obj::btf::btf::BtfError) pub aya::programs::ProgramError::Btf(aya_obj::btf::btf::BtfError)
pub aya::programs::ProgramError::ExtensionError(aya::programs::extension::ExtensionError) pub aya::programs::ProgramError::ExtensionError(aya::programs::extension::ExtensionError)
pub aya::programs::ProgramError::IOError(std::io::error::Error) pub aya::programs::ProgramError::IOError(std::io::error::Error)
pub aya::programs::ProgramError::IncompleteBreakpoint
pub aya::programs::ProgramError::InvalidName pub aya::programs::ProgramError::InvalidName
pub aya::programs::ProgramError::InvalidName::name: alloc::string::String pub aya::programs::ProgramError::InvalidName::name: alloc::string::String
pub aya::programs::ProgramError::KProbeError(aya::programs::kprobe::KProbeError) pub aya::programs::ProgramError::KProbeError(aya::programs::kprobe::KProbeError)
@ -9369,7 +9490,7 @@ pub fn aya::programs::lsm_cgroup::LsmCgroup::from(t: T) -> T
pub struct aya::programs::PerfEvent pub struct aya::programs::PerfEvent
impl aya::programs::perf_event::PerfEvent impl aya::programs::perf_event::PerfEvent
pub const aya::programs::perf_event::PerfEvent::PROGRAM_TYPE: aya::programs::ProgramType pub const aya::programs::perf_event::PerfEvent::PROGRAM_TYPE: aya::programs::ProgramType
pub fn aya::programs::perf_event::PerfEvent::attach(&mut self, perf_type: aya::programs::perf_event::PerfTypeId, config: u64, scope: aya::programs::perf_event::PerfEventScope, sample_policy: aya::programs::perf_event::SamplePolicy, inherit: bool) -> core::result::Result<aya::programs::perf_event::PerfEventLinkId, aya::programs::ProgramError> pub fn aya::programs::perf_event::PerfEvent::attach(&mut self, perf_type: aya::programs::perf_event::PerfTypeId, config: u64, scope: aya::programs::perf_event::PerfEventScope, sample_policy: aya::programs::perf_event::SamplePolicy, inherit: bool, bp: core::option::Option<aya::programs::perf_event::PerfBreakpoint>) -> core::result::Result<aya::programs::perf_event::PerfEventLinkId, aya::programs::ProgramError>
pub fn aya::programs::perf_event::PerfEvent::load(&mut self) -> core::result::Result<(), aya::programs::ProgramError> pub fn aya::programs::perf_event::PerfEvent::load(&mut self) -> core::result::Result<(), aya::programs::ProgramError>
impl aya::programs::perf_event::PerfEvent impl aya::programs::perf_event::PerfEvent
pub fn aya::programs::perf_event::PerfEvent::detach(&mut self, link_id: aya::programs::perf_event::PerfEventLinkId) -> core::result::Result<(), aya::programs::ProgramError> pub fn aya::programs::perf_event::PerfEvent::detach(&mut self, link_id: aya::programs::perf_event::PerfEventLinkId) -> core::result::Result<(), aya::programs::ProgramError>

@ -67,6 +67,8 @@ fn codegen_bindings(opts: &SysrootOptions, libbpf_dir: &Path) -> Result<()> {
.constified_enum("IFLA_.*") .constified_enum("IFLA_.*")
.constified_enum("TCA_.*") .constified_enum("TCA_.*")
.constified_enum("BPF_RINGBUF_.*") .constified_enum("BPF_RINGBUF_.*")
// PERF
.constified_enum("HW_BREAKPOINT_.*")
// NETFILTER // NETFILTER
.constified_enum("NFPROTO_.*"); .constified_enum("NFPROTO_.*");
@ -141,6 +143,7 @@ fn codegen_bindings(opts: &SysrootOptions, libbpf_dir: &Path) -> Result<()> {
"PERF_FLAG_.*", "PERF_FLAG_.*",
"PERF_EVENT_.*", "PERF_EVENT_.*",
"PERF_MAX_.*", "PERF_MAX_.*",
"HW_BREAKPOINT_.*",
// NETLINK // NETLINK
"NLMSG_ALIGNTO", "NLMSG_ALIGNTO",
"IFLA_XDP_FD", "IFLA_XDP_FD",

Loading…
Cancel
Save