Skip to content

Commit 7f50dd6

Browse files
committed
Add several definitions for io_uring ZCRX
1 parent a391cc2 commit 7f50dd6

File tree

1 file changed

+133
-1
lines changed

1 file changed

+133
-1
lines changed

src/io_uring/mod.rs

Lines changed: 133 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,10 @@ pub enum IoringRegisterOp {
451451
/// `IORING_REGISTER_SEND_MSG_RING` (since Linux 6.12)
452452
RegisterSendMsgRing = sys::io_uring_register_op::IORING_REGISTER_SEND_MSG_RING as _,
453453

454-
/// `IORING_REGISTER_RESIZE_RINGS`(since Linux 6.13)
454+
/// `IORING_REGISTER_ZCRX_IFQ` (since Linux 6.15)
455+
RegisterZcrxIfq = sys::io_uring_register_op::IORING_REGISTER_ZCRX_IFQ as _,
456+
457+
/// `IORING_REGISTER_RESIZE_RINGS` (since Linux 6.13)
455458
RegisterResizeRings = sys::io_uring_register_op::IORING_REGISTER_RESIZE_RINGS as _,
456459

457460
/// `IORING_REGISTER_MEM_REGION` (since Linux 6.13)
@@ -1204,6 +1207,45 @@ bitflags::bitflags! {
12041207
}
12051208
}
12061209

1210+
bitflags::bitflags! {
1211+
/// flags for [`io_uring_region_desc`]
1212+
#[repr(transparent)]
1213+
#[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)]
1214+
pub struct IoringRegionDescFlags: u32 {
1215+
/// `MEM_REGION_TYPE_USER`
1216+
const TYPE_USER = sys::IORING_MEM_REGION_TYPE_USER as _;
1217+
1218+
/// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
1219+
const _ = !0;
1220+
}
1221+
}
1222+
1223+
bitflags::bitflags! {
1224+
/// flags for [`io_uring_mem_region_reg`]
1225+
#[repr(transparent)]
1226+
#[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)]
1227+
pub struct IoringMemRegionRegFlags: u32 {
1228+
/// `IORING_MEM_REGION_REG_WAIT_ARG`
1229+
const REG_WAIT_ARG = sys::IORING_MEM_REGION_REG_WAIT_ARG as _;
1230+
1231+
/// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
1232+
const _ = !0;
1233+
}
1234+
}
1235+
1236+
bitflags::bitflags! {
1237+
/// flags for [`io_uring_zcrx_area_reg`]
1238+
#[repr(transparent)]
1239+
#[derive(Default, Copy, Clone, Eq, PartialEq, Hash, Debug)]
1240+
pub struct IoringZcrxAreaRegFlags: u32 {
1241+
/// `IORING_ZCRX_AREA_DMABUF`
1242+
const DMABUF = sys::IORING_ZCRX_AREA_DMABUF;
1243+
1244+
/// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
1245+
const _ = !0;
1246+
}
1247+
}
1248+
12071249
#[allow(missing_docs)]
12081250
pub const IORING_CQE_BUFFER_SHIFT: u32 = sys::IORING_CQE_BUFFER_SHIFT as _;
12091251
#[allow(missing_docs)]
@@ -1594,6 +1636,7 @@ pub union buf_union {
15941636
pub union splice_fd_in_or_file_index_or_addr_len_union {
15951637
pub splice_fd_in: i32,
15961638
pub file_index: u32,
1639+
pub zcrx_ifq_idx: u32,
15971640
pub addr_len: addr_len_struct,
15981641
pub optlen: u32,
15991642
}
@@ -1768,6 +1811,31 @@ pub struct io_uring_files_update {
17681811
pub fds: io_uring_ptr,
17691812
}
17701813

1814+
#[allow(missing_docs)]
1815+
#[repr(C)]
1816+
#[derive(Debug, Copy, Clone, Default)]
1817+
#[non_exhaustive]
1818+
pub struct io_uring_region_desc {
1819+
pub user_addr: io_uring_ptr,
1820+
pub size: u64,
1821+
pub flags: IoringRegionDescFlags,
1822+
pub id: u32,
1823+
pub mmap_offset: u64,
1824+
#[doc(hidden)]
1825+
pub resv: [u64; 4],
1826+
}
1827+
1828+
#[allow(missing_docs)]
1829+
#[repr(C)]
1830+
#[derive(Debug, Copy, Clone, Default)]
1831+
#[non_exhaustive]
1832+
pub struct io_uring_mem_region_reg {
1833+
pub region_uptr: io_uring_ptr,
1834+
pub flags: IoringMemRegionRegFlags,
1835+
#[doc(hidden)]
1836+
pub resv: [u64; 2],
1837+
}
1838+
17711839
#[allow(missing_docs)]
17721840
#[repr(C, align(8))]
17731841
#[derive(Debug, Copy, Clone, Default)]
@@ -1827,6 +1895,70 @@ pub struct io_uring_recvmsg_out {
18271895
pub flags: RecvmsgOutFlags,
18281896
}
18291897

1898+
#[allow(missing_docs)]
1899+
#[repr(C)]
1900+
#[derive(Debug, Default, Copy, Clone)]
1901+
pub struct io_uring_zcrx_rqe {
1902+
pub off: u64,
1903+
pub len: u32,
1904+
#[doc(hidden)]
1905+
pub pad: u32,
1906+
}
1907+
1908+
#[allow(missing_docs)]
1909+
#[repr(C)]
1910+
#[derive(Debug, Default, Copy, Clone)]
1911+
pub struct io_uring_zcrx_cqe {
1912+
pub off: u64,
1913+
#[doc(hidden)]
1914+
pub pad: u64,
1915+
}
1916+
1917+
#[allow(missing_docs)]
1918+
#[repr(C)]
1919+
#[derive(Debug, Default, Copy, Clone)]
1920+
pub struct io_uring_zcrx_offsets {
1921+
pub head: u32,
1922+
pub tail: u32,
1923+
pub rqes: u32,
1924+
#[doc(hidden)]
1925+
pub resv2: u32,
1926+
#[doc(hidden)]
1927+
pub resv: [u64; 2],
1928+
}
1929+
1930+
#[allow(missing_docs)]
1931+
#[repr(C)]
1932+
#[derive(Debug, Default, Copy, Clone)]
1933+
pub struct io_uring_zcrx_area_reg {
1934+
pub addr: io_uring_ptr,
1935+
pub len: u64,
1936+
pub rq_area_token: u64,
1937+
pub flags: IoringZcrxAreaRegFlags,
1938+
#[doc(hidden)]
1939+
pub resv1: u32,
1940+
#[doc(hidden)]
1941+
pub resv2: [u64; 2],
1942+
}
1943+
1944+
#[allow(missing_docs)]
1945+
#[repr(C)]
1946+
#[derive(Debug, Default, Copy, Clone)]
1947+
pub struct io_uring_zcrx_ifq_reg {
1948+
pub if_idx: u32,
1949+
pub if_rxq: u32,
1950+
pub rq_entries: u32,
1951+
pub flags: u32,
1952+
pub area_ptr: u64,
1953+
pub region_ptr: u64,
1954+
pub offsets: io_uring_zcrx_offsets,
1955+
pub zcrx_id: u32,
1956+
#[doc(hidden)]
1957+
pub resv2: u32,
1958+
#[doc(hidden)]
1959+
pub resv: [u64; 3],
1960+
}
1961+
18301962
#[allow(missing_docs)]
18311963
#[repr(C)]
18321964
#[derive(Debug, Copy, Clone)]

0 commit comments

Comments
 (0)