@@ -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) ]
12081250pub const IORING_CQE_BUFFER_SHIFT : u32 = sys:: IORING_CQE_BUFFER_SHIFT as _ ;
12091251#[ allow( missing_docs) ]
@@ -1594,6 +1636,7 @@ pub union buf_union {
15941636pub 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