• Dylan Yudaken's avatar
    io_uring: support multishot in recvmsg · 9bb66906
    Dylan Yudaken authored
    Similar to multishot recv, this will require provided buffers to be
    used. However recvmsg is much more complex than recv as it has multiple
    outputs. Specifically flags, name, and control messages.
    
    Support this by introducing a new struct io_uring_recvmsg_out with 4
    fields. namelen, controllen and flags match the similar out fields in
    msghdr from standard recvmsg(2), payloadlen is the length of the payload
    following the header.
    This struct is placed at the start of the returned buffer. Based on what
    the user specifies in struct msghdr, the next bytes of the buffer will be
    name (the next msg_namelen bytes), and then control (the next
    msg_controllen bytes). The payload will come at the end. The return value
    in the CQE is the total used size of the provided buffer.
    Signed-off-by: default avatarDylan Yudaken <dylany@fb.com>
    Link: https://lore.kernel.org/r/20220714110258.1336200-4-dylany@fb.com
    [axboe: style fixups, see link]
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    9bb66906
net.h 1.88 KB