@@ -451,7 +451,10 @@ pub enum IoringRegisterOp {
451
451
/// `IORING_REGISTER_SEND_MSG_RING` (since Linux 6.12)
452
452
RegisterSendMsgRing = sys:: io_uring_register_op:: IORING_REGISTER_SEND_MSG_RING as _ ,
453
453
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)
455
458
RegisterResizeRings = sys:: io_uring_register_op:: IORING_REGISTER_RESIZE_RINGS as _ ,
456
459
457
460
/// `IORING_REGISTER_MEM_REGION` (since Linux 6.13)
@@ -1204,6 +1207,45 @@ bitflags::bitflags! {
1204
1207
}
1205
1208
}
1206
1209
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
+
1207
1249
#[ allow( missing_docs) ]
1208
1250
pub const IORING_CQE_BUFFER_SHIFT : u32 = sys:: IORING_CQE_BUFFER_SHIFT as _ ;
1209
1251
#[ allow( missing_docs) ]
@@ -1594,6 +1636,7 @@ pub union buf_union {
1594
1636
pub union splice_fd_in_or_file_index_or_addr_len_union {
1595
1637
pub splice_fd_in : i32 ,
1596
1638
pub file_index : u32 ,
1639
+ pub zcrx_ifq_idx : u32 ,
1597
1640
pub addr_len : addr_len_struct ,
1598
1641
pub optlen : u32 ,
1599
1642
}
@@ -1768,6 +1811,31 @@ pub struct io_uring_files_update {
1768
1811
pub fds : io_uring_ptr ,
1769
1812
}
1770
1813
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
+
1771
1839
#[ allow( missing_docs) ]
1772
1840
#[ repr( C , align( 8 ) ) ]
1773
1841
#[ derive( Debug , Copy , Clone , Default ) ]
@@ -1827,6 +1895,75 @@ pub struct io_uring_recvmsg_out {
1827
1895
pub flags : RecvmsgOutFlags ,
1828
1896
}
1829
1897
1898
+ #[ allow( missing_docs) ]
1899
+ #[ repr( C ) ]
1900
+ #[ derive( Debug , Default , Copy , Clone ) ]
1901
+ #[ non_exhaustive]
1902
+ pub struct io_uring_zcrx_rqe {
1903
+ pub off : u64 ,
1904
+ pub len : u32 ,
1905
+ #[ doc( hidden) ]
1906
+ pub pad : u32 ,
1907
+ }
1908
+
1909
+ #[ allow( missing_docs) ]
1910
+ #[ repr( C ) ]
1911
+ #[ derive( Debug , Default , Copy , Clone ) ]
1912
+ #[ non_exhaustive]
1913
+ pub struct io_uring_zcrx_cqe {
1914
+ pub off : u64 ,
1915
+ #[ doc( hidden) ]
1916
+ pub pad : u64 ,
1917
+ }
1918
+
1919
+ #[ allow( missing_docs) ]
1920
+ #[ repr( C ) ]
1921
+ #[ derive( Debug , Default , Copy , Clone ) ]
1922
+ #[ non_exhaustive]
1923
+ pub struct io_uring_zcrx_offsets {
1924
+ pub head : u32 ,
1925
+ pub tail : u32 ,
1926
+ pub rqes : u32 ,
1927
+ #[ doc( hidden) ]
1928
+ pub resv2 : u32 ,
1929
+ #[ doc( hidden) ]
1930
+ pub resv : [ u64 ; 2 ] ,
1931
+ }
1932
+
1933
+ #[ allow( missing_docs) ]
1934
+ #[ repr( C ) ]
1935
+ #[ derive( Debug , Default , Copy , Clone ) ]
1936
+ #[ non_exhaustive]
1937
+ pub struct io_uring_zcrx_area_reg {
1938
+ pub addr : io_uring_ptr ,
1939
+ pub len : u64 ,
1940
+ pub rq_area_token : u64 ,
1941
+ pub flags : IoringZcrxAreaRegFlags ,
1942
+ #[ doc( hidden) ]
1943
+ pub resv1 : u32 ,
1944
+ #[ doc( hidden) ]
1945
+ pub resv2 : [ u64 ; 2 ] ,
1946
+ }
1947
+
1948
+ #[ allow( missing_docs) ]
1949
+ #[ repr( C ) ]
1950
+ #[ derive( Debug , Default , Copy , Clone ) ]
1951
+ #[ non_exhaustive]
1952
+ pub struct io_uring_zcrx_ifq_reg {
1953
+ pub if_idx : u32 ,
1954
+ pub if_rxq : u32 ,
1955
+ pub rq_entries : u32 ,
1956
+ pub flags : u32 ,
1957
+ pub area_ptr : u64 ,
1958
+ pub region_ptr : u64 ,
1959
+ pub offsets : io_uring_zcrx_offsets ,
1960
+ pub zcrx_id : u32 ,
1961
+ #[ doc( hidden) ]
1962
+ pub resv2 : u32 ,
1963
+ #[ doc( hidden) ]
1964
+ pub resv : [ u64 ; 3 ] ,
1965
+ }
1966
+
1830
1967
#[ allow( missing_docs) ]
1831
1968
#[ repr( C ) ]
1832
1969
#[ derive( Debug , Copy , Clone ) ]
0 commit comments