@@ -35,6 +35,7 @@ use core::ptr::{null_mut, write_bytes};
3535use linux_raw_sys:: net;
3636
3737// Export types used in io_uring APIs.
38+ pub use crate :: clockid:: ClockId ;
3839pub use crate :: event:: epoll:: {
3940 Event as EpollEvent , EventData as EpollEventData , EventFlags as EpollEventFlags ,
4041} ;
@@ -44,6 +45,10 @@ pub use crate::fs::{
4445} ;
4546pub use crate :: io:: ReadWriteFlags ;
4647pub use crate :: net:: { RecvFlags , SendFlags , SocketFlags } ;
48+ pub use crate :: thread:: futex:: {
49+ Wait as FutexWait , WaitFlags as FutexWaitFlags , WaitPtr as FutexWaitPtr ,
50+ WaitvFlags as FutexWaitvFlags ,
51+ } ;
4752pub use crate :: timespec:: { Nsecs , Secs , Timespec } ;
4853pub use linux_raw_sys:: general:: sigset_t;
4954
@@ -420,6 +425,15 @@ pub enum IoringOp {
420425
421426 /// `IORING_OP_SENDMSG_ZC`
422427 SendmsgZc = sys:: io_uring_op:: IORING_OP_SENDMSG_ZC as _ ,
428+
429+ /// `IORING_OP_FUTEX_WAIT`
430+ FutexWait = sys:: io_uring_op:: IORING_OP_FUTEX_WAIT as _ ,
431+
432+ /// `IORING_OP_FUTEX_WAKE`
433+ FutexWake = sys:: io_uring_op:: IORING_OP_FUTEX_WAKE as _ ,
434+
435+ /// `IORING_OP_FUTEX_WAITV`
436+ FutexWaitv = sys:: io_uring_op:: IORING_OP_FUTEX_WAITV as _ ,
423437}
424438
425439impl Default for IoringOp {
@@ -660,6 +674,22 @@ bitflags::bitflags! {
660674 }
661675}
662676
677+ bitflags:: bitflags! {
678+ /// `IORING_URING_CMD_*` flags for use with [`io_uring_sqe`].
679+ #[ repr( transparent) ]
680+ #[ derive( Default , Copy , Clone , Eq , PartialEq , Hash , Debug ) ]
681+ pub struct IoringUringCmdFlags : u32 {
682+ /// `IORING_URING_CMD_FIXED`
683+ const FIXED = sys:: IORING_URING_CMD_FIXED ;
684+
685+ /// `IORING_URING_CMD_MASK`
686+ const MASK = sys:: IORING_URING_CMD_MASK ;
687+
688+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
689+ const _ = !0 ;
690+ }
691+ }
692+
663693bitflags:: bitflags! {
664694 /// `IORING_ASYNC_CANCEL_*` flags for use with [`io_uring_sqe`].
665695 #[ repr( transparent) ]
@@ -969,6 +999,12 @@ impl Default for io_uring_ptr {
969999 }
9701000}
9711001
1002+ impl core:: fmt:: Debug for io_uring_ptr {
1003+ fn fmt ( & self , f : & mut core:: fmt:: Formatter < ' _ > ) -> core:: fmt:: Result {
1004+ self . ptr . fmt ( f)
1005+ }
1006+ }
1007+
9721008/// User data in the io_uring API.
9731009///
9741010/// `io_uring`'s native API represents `user_data` fields as `u64` values. In
@@ -1147,6 +1183,8 @@ pub union op_flags_union {
11471183 pub hardlink_flags : AtFlags ,
11481184 pub xattr_flags : XattrFlags ,
11491185 pub msg_ring_flags : IoringMsgringFlags ,
1186+ pub uring_cmd_flags : IoringUringCmdFlags ,
1187+ pub futex_flags : FutexWaitvFlags ,
11501188}
11511189
11521190#[ allow( missing_docs) ]
0 commit comments