From a2c45ab4d60b1102fcd5921afe9e9028edd0cce2 Mon Sep 17 00:00:00 2001 From: Without Boats Date: Tue, 22 Sep 2020 17:18:30 +0200 Subject: [PATCH 1/2] Add prep_sendmsg and prep_recvmsg These use a `*mut libc::msghdr` unfortunately; users are responsible for constructing that themselves. --- src/sqe.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/sqe.rs b/src/sqe.rs index c94a33d..80ea57b 100644 --- a/src/sqe.rs +++ b/src/sqe.rs @@ -236,7 +236,15 @@ impl<'a> SQE<'a> { fd.update_sqe(self); } - // TODO sendmsg and recvmsg + pub unsafe fn prep_recvmsg(&mut self, fd: impl RingFd, msg: *mut libc::msghdr, flags: MsgFlags) { + uring_sys::io_uring_prep_recvmsg(self.sqe, fd.as_raw_fd(), msg, flags.bits() as _); + fd.update_sqe(self); + } + + pub unsafe fn prep_sendmsg(&mut self, fd: impl RingFd, msg: *mut libc::msghdr, flags: MsgFlags) { + uring_sys::io_uring_prep_sendmsg(self.sqe, fd.as_raw_fd(), msg, flags.bits() as _); + fd.update_sqe(self); + } /// Prepare a fallocate event. #[inline] From fcec114d00c2934ad0b031bbbab45ed51a4bf9ea Mon Sep 17 00:00:00 2001 From: Without Boats Date: Tue, 22 Sep 2020 17:19:30 +0200 Subject: [PATCH 2/2] some docs --- src/sqe.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/sqe.rs b/src/sqe.rs index 80ea57b..ae9c884 100644 --- a/src/sqe.rs +++ b/src/sqe.rs @@ -236,11 +236,13 @@ impl<'a> SQE<'a> { fd.update_sqe(self); } + /// Prepare a recvmsg event on a file descriptor. pub unsafe fn prep_recvmsg(&mut self, fd: impl RingFd, msg: *mut libc::msghdr, flags: MsgFlags) { uring_sys::io_uring_prep_recvmsg(self.sqe, fd.as_raw_fd(), msg, flags.bits() as _); fd.update_sqe(self); } + /// Prepare a sendmsg event on a file descriptor. pub unsafe fn prep_sendmsg(&mut self, fd: impl RingFd, msg: *mut libc::msghdr, flags: MsgFlags) { uring_sys::io_uring_prep_sendmsg(self.sqe, fd.as_raw_fd(), msg, flags.bits() as _); fd.update_sqe(self);