mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-24 05:01:03 +02:00
io_uring: support multishot in recvmsg
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: Dylan Yudaken <dylany@fb.com> Link: https://lore.kernel.org/r/20220714110258.1336200-4-dylany@fb.com [axboe: style fixups, see link] Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
72c531f8ef
commit
9bb66906f2
@@ -613,4 +613,11 @@ struct io_uring_file_index_range {
|
||||
__u64 resv;
|
||||
};
|
||||
|
||||
struct io_uring_recvmsg_out {
|
||||
__u32 namelen;
|
||||
__u32 controllen;
|
||||
__u32 payloadlen;
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user