Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


io_uring_prep_recvmsg_multishot(3) — Linux manual page

NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |NOTES |SEE ALSO |COLOPHON

io_uring_prep_recvmsg(3)     liburing Manualio_uring_prep_recvmsg(3)

NAME        top

       io_uring_prep_recvmsg - prepare a recvmsg request

SYNOPSIS        top

#include <sys/types.h>#include <sys/socket.h>#include <liburing.h>void io_uring_prep_recvmsg(struct io_uring_sqe *sqe,intfd,struct msghdr *msg,unsignedflags);void io_uring_prep_recvmsg_multishot(struct io_uring_sqe *sqe,intfd,struct msghdr *msg,unsignedflags);

DESCRIPTION        top

       Theio_uring_prep_recvmsg(3) function prepares a recvmsg request.       The submission queue entrysqe is setup to use the file descriptorfd to start receiving the data indicated bymsg with therecvmsg(2) defined flags in theflags argument.       This function prepares an asyncrecvmsg(2) 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 theIOSQE_BUFFER_SELECTflag to be set and       noMSG_WAITALLflag 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 its       result.  If a posted CQE does not have theIORING_CQE_F_MOREflag       set, then the multishot receive is done and the application must       issue a new request if it still wishes to receive data from the       socket.       Unlikerecvmsg(2), multishot recvmsg will prepend astructio_uring_recvmsg_out which describes the layout of the rest of the       buffer in combination with the initialstruct msghdr submitted       with the request. Seeio_uring_recvmsg_out(3) for more information       on accessing the data.       Multishot variants are available since kernel 6.0.       After calling this function, additional io_uring internal modifier       flags may be set in the SQEioprio field. The following flags are       supported:IORING_RECVSEND_POLL_FIRST              If set, io_uring will assume the socket is currently empty              and attempting to receive data will be unsuccessful. For              this case, io_uring will arm internal poll and trigger a              receive of the data when the socket has data to be read.              This initial receive attempt can be wasteful for the case              where the socket is expected to be empty, setting this flag              will bypass the initial receive attempt and go straight to              arming poll. If poll does indicate that data is ready to be              received, the operation will proceed.              Can be used with the CQEIORING_CQE_F_SOCK_NONEMPTYflag,              which io_uring will set on CQEs after arecv(2) orrecvmsg(2) operation. If set, the socket still had data to              be read after the operation completed. Both these flags are              available since 5.19.

RETURN VALUE        top

       None

ERRORS        top

       The CQEres field will contain the result of the operation. See       the related man page for details on possible values. Note that       where synchronous system calls will return-1on failure and seterrno to the actual error value, io_uring never useserrno.       Instead it returns the negatederrno directly in the CQEres       field.

NOTES        top

       As with any request that passes in data in a struct, that data       must remain valid until the request has been successfully       submitted. It need not remain valid until completion. Once a       request has been submitted, the in-kernel state is stable. Very       early kernels (5.4 and earlier) required state to be stable until       the completion occurred. Applications can test for this behavior       by inspecting theIORING_FEAT_SUBMIT_STABLEflag passed back fromio_uring_queue_init_params(3).

SEE ALSO        top

io_uring_get_sqe(3),io_uring_submit(3),io_uring_buf_ring_init(3),io_uring_buf_ring_add(3),recvmsg(2)

COLOPHON        top

       This page is part of theliburing (A library for io_uring)       project.  Information about the project can be found at        ⟨https://github.com/axboe/liburing⟩.  If you have a bug report for       this manual page, send it to io-uring@vger.kernel.org.  This page       was obtained from the project's upstream Git repository       ⟨https://github.com/axboe/liburing⟩ on 2025-08-11.  (At that time,       the date of the most recent commit that was found in the       repository was 2025-08-02.)  If you discover any rendering       problems in this HTML version of the page, or you believe there is       a better or more up-to-date source for the page, or you have       corrections or improvements to the information in this COLOPHON       (which isnot part of the original manual page), send a mail to       man-pages@man7.orgliburing-2.2                  March 12, 2022io_uring_prep_recvmsg(3)

Pages that refer to this page:io_uring_recvmsg_cmsg_firsthdr(3)io_uring_recvmsg_cmsg_nexthdr(3)io_uring_recvmsg_name(3)io_uring_recvmsg_out(3)io_uring_recvmsg_payload(3)io_uring_recvmsg_payload_length(3)io_uring_recvmsg_validate(3)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp