Message ID | 20250215041857.2108684-3-dw@davidwei.uk (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | add basic zero copy receive support | expand |
On 2/14/25 9:18 PM, David Wei wrote: > diff --git a/src/liburing-ffi.map b/src/liburing-ffi.map > index 83593a33826a..cedc71383547 100644 > --- a/src/liburing-ffi.map > +++ b/src/liburing-ffi.map > @@ -222,6 +222,7 @@ LIBURING_2.9 { > io_uring_register_wait_reg; > io_uring_submit_and_wait_reg; > io_uring_clone_buffers_offset; > + io_uring_register_ifq; > io_uring_register_region; > io_uring_sqe_set_buf_group; > } LIBURING_2.8; > diff --git a/src/liburing.map b/src/liburing.map > index 9f7b21171218..81dd6ab9b8cc 100644 > --- a/src/liburing.map > +++ b/src/liburing.map > @@ -109,5 +109,6 @@ LIBURING_2.9 { > io_uring_register_wait_reg; > io_uring_submit_and_wait_reg; > io_uring_clone_buffers_offset; > + io_uring_register_ifq; > io_uring_register_region; > } LIBURING_2.8; This isn't right - 2.9 has already been released, you can't add new symbols to an existing release. I usually bump the version post release, but looks like I didn't this time - corrected now, with a new empty section for 2.10 symbols as well where these should go.
On 2025-02-18 09:05, Jens Axboe wrote: > On 2/14/25 9:18 PM, David Wei wrote: >> diff --git a/src/liburing-ffi.map b/src/liburing-ffi.map >> index 83593a33826a..cedc71383547 100644 >> --- a/src/liburing-ffi.map >> +++ b/src/liburing-ffi.map >> @@ -222,6 +222,7 @@ LIBURING_2.9 { >> io_uring_register_wait_reg; >> io_uring_submit_and_wait_reg; >> io_uring_clone_buffers_offset; >> + io_uring_register_ifq; >> io_uring_register_region; >> io_uring_sqe_set_buf_group; >> } LIBURING_2.8; >> diff --git a/src/liburing.map b/src/liburing.map >> index 9f7b21171218..81dd6ab9b8cc 100644 >> --- a/src/liburing.map >> +++ b/src/liburing.map >> @@ -109,5 +109,6 @@ LIBURING_2.9 { >> io_uring_register_wait_reg; >> io_uring_submit_and_wait_reg; >> io_uring_clone_buffers_offset; >> + io_uring_register_ifq; >> io_uring_register_region; >> } LIBURING_2.8; > > This isn't right - 2.9 has already been released, you can't add new > symbols to an existing release. I usually bump the version post release, > but looks like I didn't this time - corrected now, with a new empty > section for 2.10 symbols as well where these should go. > Thanks, I'll rebase and add to 2.10.
diff --git a/src/include/liburing.h b/src/include/liburing.h index 49b4edf437b2..6393599cb3bf 100644 --- a/src/include/liburing.h +++ b/src/include/liburing.h @@ -132,6 +132,16 @@ struct io_uring { unsigned pad2; }; +struct io_uring_zcrx_rq { + __u32 *khead; + __u32 *ktail; + __u32 rq_tail; + unsigned ring_entries; + + struct io_uring_zcrx_rqe *rqes; + void *ring_ptr; +}; + /* * Library interface */ @@ -265,6 +275,8 @@ int io_uring_register_file_alloc_range(struct io_uring *ring, int io_uring_register_napi(struct io_uring *ring, struct io_uring_napi *napi); int io_uring_unregister_napi(struct io_uring *ring, struct io_uring_napi *napi); +int io_uring_register_ifq(struct io_uring *ring, + struct io_uring_zcrx_ifq_reg *reg); int io_uring_register_clock(struct io_uring *ring, struct io_uring_clock_register *arg); diff --git a/src/liburing-ffi.map b/src/liburing-ffi.map index 83593a33826a..cedc71383547 100644 --- a/src/liburing-ffi.map +++ b/src/liburing-ffi.map @@ -222,6 +222,7 @@ LIBURING_2.9 { io_uring_register_wait_reg; io_uring_submit_and_wait_reg; io_uring_clone_buffers_offset; + io_uring_register_ifq; io_uring_register_region; io_uring_sqe_set_buf_group; } LIBURING_2.8; diff --git a/src/liburing.map b/src/liburing.map index 9f7b21171218..81dd6ab9b8cc 100644 --- a/src/liburing.map +++ b/src/liburing.map @@ -109,5 +109,6 @@ LIBURING_2.9 { io_uring_register_wait_reg; io_uring_submit_and_wait_reg; io_uring_clone_buffers_offset; + io_uring_register_ifq; io_uring_register_region; } LIBURING_2.8; diff --git a/src/register.c b/src/register.c index 0fff208cd5f5..99337d13135d 100644 --- a/src/register.c +++ b/src/register.c @@ -422,6 +422,12 @@ int io_uring_clone_buffers(struct io_uring *dst, struct io_uring *src) return io_uring_clone_buffers_offset(dst, src, 0, 0, 0, 0); } +int io_uring_register_ifq(struct io_uring *ring, + struct io_uring_zcrx_ifq_reg *reg) +{ + return do_register(ring, IORING_REGISTER_ZCRX_IFQ, reg, 1); +} + int io_uring_resize_rings(struct io_uring *ring, struct io_uring_params *p) { unsigned sq_head, sq_tail;
Add basic support for zcrx with a thin wrapper around IORING_REGISTER_ZCRX_IFQ and a struct for the refill queue. Signed-off-by: David Wei <dw@davidwei.uk> --- src/include/liburing.h | 12 ++++++++++++ src/liburing-ffi.map | 1 + src/liburing.map | 1 + src/register.c | 6 ++++++ 4 files changed, 20 insertions(+)