aboutsummaryrefslogtreecommitdiff
path: root/src/unix/linux_like/linux/gnu/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/unix/linux_like/linux/gnu/mod.rs')
-rw-r--r--src/unix/linux_like/linux/gnu/mod.rs138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs
index 377b9f12..9af519e9 100644
--- a/src/unix/linux_like/linux/gnu/mod.rs
+++ b/src/unix/linux_like/linux/gnu/mod.rs
@@ -3,6 +3,7 @@ pub type __priority_which_t = ::c_uint;
pub type __rlimit_resource_t = ::c_uint;
pub type Lmid_t = ::c_long;
pub type regoff_t = ::c_int;
+pub type __kernel_rwf_t = ::c_int;
cfg_if! {
if #[cfg(doc)] {
@@ -355,6 +356,104 @@ s! {
#[cfg(libc_union)]
pub u: __c_anonymous_ptrace_syscall_info_data,
}
+
+ // linux/if_xdp.h
+
+ pub struct sockaddr_xdp {
+ pub sxdp_family: ::__u16,
+ pub sxdp_flags: ::__u16,
+ pub sxdp_ifindex: ::__u32,
+ pub sxdp_queue_id: ::__u32,
+ pub sxdp_shared_umem_fd: ::__u32,
+ }
+
+ pub struct xdp_ring_offset {
+ pub producer: ::__u64,
+ pub consumer: ::__u64,
+ pub desc: ::__u64,
+ pub flags: ::__u64,
+ }
+
+ pub struct xdp_mmap_offsets {
+ pub rx: xdp_ring_offset,
+ pub tx: xdp_ring_offset,
+ pub fr: xdp_ring_offset,
+ pub cr: xdp_ring_offset,
+ }
+
+ pub struct xdp_ring_offset_v1 {
+ pub producer: ::__u64,
+ pub consumer: ::__u64,
+ pub desc: ::__u64,
+ }
+
+ pub struct xdp_mmap_offsets_v1 {
+ pub rx: xdp_ring_offset_v1,
+ pub tx: xdp_ring_offset_v1,
+ pub fr: xdp_ring_offset_v1,
+ pub cr: xdp_ring_offset_v1,
+ }
+
+ pub struct xdp_umem_reg {
+ pub addr: ::__u64,
+ pub len: ::__u64,
+ pub chunk_size: ::__u32,
+ pub headroom: ::__u32,
+ pub flags: ::__u32,
+ }
+
+ pub struct xdp_umem_reg_v1 {
+ pub addr: ::__u64,
+ pub len: ::__u64,
+ pub chunk_size: ::__u32,
+ pub headroom: ::__u32,
+ }
+
+ pub struct xdp_statistics {
+ pub rx_dropped: ::__u64,
+ pub rx_invalid_descs: ::__u64,
+ pub tx_invalid_descs: ::__u64,
+ pub rx_ring_full: ::__u64,
+ pub rx_fill_ring_empty_descs: ::__u64,
+ pub tx_ring_empty_descs: ::__u64,
+ }
+
+ pub struct xdp_statistics_v1 {
+ pub rx_dropped: ::__u64,
+ pub rx_invalid_descs: ::__u64,
+ pub tx_invalid_descs: ::__u64,
+ }
+
+ pub struct xdp_options {
+ pub flags: ::__u32,
+ }
+
+ pub struct xdp_desc {
+ pub addr: ::__u64,
+ pub len: ::__u32,
+ pub options: ::__u32,
+ }
+
+ pub struct iocb {
+ pub aio_data: ::__u64,
+ #[cfg(target_endian = "little")]
+ pub aio_key: ::__u32,
+ #[cfg(target_endian = "little")]
+ pub aio_rw_flags: ::__kernel_rwf_t,
+ #[cfg(target_endian = "big")]
+ pub aio_rw_flags: ::__kernel_rwf_t,
+ #[cfg(target_endian = "big")]
+ pub aio_key: ::__u32,
+ pub aio_lio_opcode: ::__u16,
+ pub aio_reqprio: ::__s16,
+ pub aio_fildes: ::__u32,
+ pub aio_buf: ::__u64,
+ pub aio_nbytes: ::__u64,
+ pub aio_offset: ::__s64,
+ aio_reserved2: ::__u64,
+ pub aio_flags: ::__u32,
+ pub aio_resfd: ::__u32,
+ }
}
impl siginfo_t {
@@ -920,6 +1019,38 @@ pub const GENL_UNS_ADMIN_PERM: ::c_int = 0x10;
pub const GENL_ID_VFS_DQUOT: ::c_int = ::NLMSG_MIN_TYPE + 1;
pub const GENL_ID_PMCRAID: ::c_int = ::NLMSG_MIN_TYPE + 2;
+// linux/if_xdp.h
+pub const XDP_SHARED_UMEM: ::__u16 = 1 << 0;
+pub const XDP_COPY: ::__u16 = 1 << 1;
+pub const XDP_ZEROCOPY: ::__u16 = 1 << 2;
+pub const XDP_USE_NEED_WAKEUP: ::__u16 = 1 << 3;
+pub const XDP_USE_SG: ::__u16 = 1 << 4;
+
+pub const XDP_UMEM_UNALIGNED_CHUNK_FLAG: ::__u32 = 1 << 0;
+
+pub const XDP_RING_NEED_WAKEUP: ::__u32 = 1 << 0;
+
+pub const XDP_MMAP_OFFSETS: ::c_int = 1;
+pub const XDP_RX_RING: ::c_int = 2;
+pub const XDP_TX_RING: ::c_int = 3;
+pub const XDP_UMEM_REG: ::c_int = 4;
+pub const XDP_UMEM_FILL_RING: ::c_int = 5;
+pub const XDP_UMEM_COMPLETION_RING: ::c_int = 6;
+pub const XDP_STATISTICS: ::c_int = 7;
+pub const XDP_OPTIONS: ::c_int = 8;
+
+pub const XDP_OPTIONS_ZEROCOPY: ::__u32 = 1 << 0;
+
+pub const XDP_PGOFF_RX_RING: ::off_t = 0;
+pub const XDP_PGOFF_TX_RING: ::off_t = 0x80000000;
+pub const XDP_UMEM_PGOFF_FILL_RING: ::c_ulonglong = 0x100000000;
+pub const XDP_UMEM_PGOFF_COMPLETION_RING: ::c_ulonglong = 0x180000000;
+
+pub const XSK_UNALIGNED_BUF_OFFSET_SHIFT: ::c_int = 48;
+pub const XSK_UNALIGNED_BUF_ADDR_MASK: ::c_ulonglong = (1 << XSK_UNALIGNED_BUF_OFFSET_SHIFT) - 1;
+
+pub const XDP_PKT_CONTD: ::__u32 = 1 << 0;
+
// elf.h
pub const NT_PRSTATUS: ::c_int = 1;
pub const NT_PRFPREG: ::c_int = 2;
@@ -1353,6 +1484,13 @@ extern "C" {
format: *const ::c_char,
tm: *const ::tm,
) -> ::size_t;
+ pub fn strftime_l(
+ s: *mut ::c_char,
+ max: ::size_t,
+ format: *const ::c_char,
+ tm: *const ::tm,
+ locale: ::locale_t,
+ ) -> ::size_t;
pub fn strptime(s: *const ::c_char, format: *const ::c_char, tm: *mut ::tm) -> *mut ::c_char;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char;