@@ -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,70 @@ 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
+ 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
+
1830
1962
#[ allow( missing_docs) ]
1831
1963
#[ repr( C ) ]
1832
1964
#[ derive( Debug , Copy , Clone ) ]
0 commit comments