@@ -14,6 +14,12 @@ io_uring_prep_recv \- prepare a recv request
.BI " void *" buf ","
.BI " size_t " len ","
.BI " int " flags ");"
+.PP
+.BI "void io_uring_prep_recv_multishot(struct io_uring_sqe *" sqe ","
+.BI " int " sockfd ","
+.BI " void *" buf ","
+.BI " size_t " len ","
+.BI " int " flags ");"
.fi
.SH DESCRIPTION
.PP
@@ -36,6 +42,22 @@ This function prepares an async
request. See that man page for details on the arguments specified to this
prep helper.
+The multishot version allows the application to issue a single receive request,
+which repeatedly posts a CQE when data is available. It requires length to be 0
+, the
+.B IOSQE_BUFFER_SELECT
+flag to be set and no
+.B MSG_WAITALL
+flag to be set.
+Therefore each CQE will take a buffer out of a provided buffer pool for receiving.
+The application should check the flags of each CQE, regardless of it's result.
+If a posted CQE does not have the
+.B IORING_CQE_F_MORE
+flag set then the multishot receive will be done and the application should issue a
+new request.
+Multishot variants are available since kernel 5.20.
+
+
After calling this function, additional io_uring internal modifier flags
may be set in the SQE
.I off
new file mode 120000
@@ -0,0 +1 @@
+io_uring_prep_recv.3
\ No newline at end of file
@@ -15,6 +15,11 @@ io_uring_prep_recvmsg \- prepare a recvmsg request
.BI " int " fd ","
.BI " struct msghdr *" msg ","
.BI " unsigned " flags ");"
+.PP
+.BI "void io_uring_prep_recvmsg_multishot(struct io_uring_sqe *" sqe ","
+.BI " int " fd ","
+.BI " struct msghdr *" msg ","
+.BI " unsigned " flags ");"
.fi
.SH DESCRIPTION
.PP
@@ -37,6 +42,21 @@ This function prepares an async
request. See that man page for details on the arguments specified to this
prep helper.
+The multishot version allows the application to issue a single receive request,
+which repeatedly posts a CQE when data is available. It requires length to be 0
+, the
+.B IOSQE_BUFFER_SELECT
+flag to be set and no
+.B MSG_WAITALL
+flag to be set.
+Therefore each CQE will take a buffer out of a provided buffer pool for receiving.
+The application should check the flags of each CQE, regardless of it's result.
+If a posted CQE does not have the
+.B IORING_CQE_F_MORE
+flag set then the multishot receive will be done and the application should issue a
+new request.
+Multishot variants are available since kernel 5.20.
+
After calling this function, additional io_uring internal modifier flags
may be set in the SQE
.I off
new file mode 120000
@@ -0,0 +1 @@
+io_uring_prep_recvmsg.3
\ No newline at end of file
add appropriate docs to io_uring_prep_recvmsg/io_uring_prep_recv man pages Signed-off-by: Dylan Yudaken <dylany@fb.com> --- man/io_uring_prep_recv.3 | 22 ++++++++++++++++++++++ man/io_uring_prep_recv_multishot.3 | 1 + man/io_uring_prep_recvmsg.3 | 20 ++++++++++++++++++++ man/io_uring_prep_recvmsg_multishot.3 | 1 + 4 files changed, 44 insertions(+) create mode 120000 man/io_uring_prep_recv_multishot.3 create mode 120000 man/io_uring_prep_recvmsg_multishot.3