diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2022-09-21 12:17:54 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-09-21 13:15:02 -0600 |
commit | 493108d95f1464ccd101d4e5cfa7e93f1fc64d47 (patch) | |
tree | 1fe9fd8773f4c8a351a20f3cdc796af6f5a074c3 /io_uring/opdef.c | |
parent | c4c0009e0b56ef9920020bcade1e45be52653bae (diff) |
io_uring/net: zerocopy sendmsg
Add a zerocopy version of sendmsg.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/6aabc4bdfc0ec78df6ec9328137e394af9d4e7ef.1663668091.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/opdef.c')
-rw-r--r-- | io_uring/opdef.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/io_uring/opdef.c b/io_uring/opdef.c index 0fdeb1bc21de..2330f6da791e 100644 --- a/io_uring/opdef.c +++ b/io_uring/opdef.c @@ -505,6 +505,25 @@ const struct io_op_def io_op_defs[] = { .prep = io_eopnotsupp_prep, #endif }, + [IORING_OP_SENDMSG_ZC] = { + .name = "SENDMSG_ZC", + .needs_file = 1, + .unbound_nonreg_file = 1, + .pollout = 1, + .audit_skip = 1, + .ioprio = 1, + .manual_alloc = 1, +#if defined(CONFIG_NET) + .async_size = sizeof(struct io_async_msghdr), + .prep = io_send_zc_prep, + .issue = io_sendmsg_zc, + .prep_async = io_sendmsg_prep_async, + .cleanup = io_send_zc_cleanup, + .fail = io_sendrecv_fail, +#else + .prep = io_eopnotsupp_prep, +#endif + }, }; const char *io_uring_get_opcode(u8 opcode) |