Message ID | 20221119041149.152899-2-shr@devkernel.io (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | liburing: add api for napi busy poll | expand |
On 11/19/22 11:11 AM, Stefan Roesch wrote: > + > +int io_uring_register_napi(struct io_uring *ring, struct io_uring_napi *napi) > +{ > + return __sys_io_uring_register(ring->ring_fd, > + IORING_REGISTER_NAPI, napi, 0); > +} > + > +int io_uring_unregister_napi(struct io_uring *ring, struct io_uring_napi *napi) > +{ > + return __sys_io_uring_register(ring->ring_fd, > + IORING_REGISTER_NAPI, napi, 0); > +} The latter should be IORING_UNREGISTER_NAPI instead of IORING_REGISTER_NAPI? Or did I miss something?
Ammar Faizi <ammarfaizi2@gnuweeb.org> writes: > On 11/19/22 11:11 AM, Stefan Roesch wrote: >> + >> +int io_uring_register_napi(struct io_uring *ring, struct io_uring_napi *napi) >> +{ >> + return __sys_io_uring_register(ring->ring_fd, >> + IORING_REGISTER_NAPI, napi, 0); >> +} >> + >> +int io_uring_unregister_napi(struct io_uring *ring, struct io_uring_napi *napi) >> +{ >> + return __sys_io_uring_register(ring->ring_fd, >> + IORING_REGISTER_NAPI, napi, 0); >> +} > > The latter should be IORING_UNREGISTER_NAPI instead of IORING_REGISTER_NAPI? > Or did I miss something? Thats correct.
diff --git a/src/include/liburing.h b/src/include/liburing.h index 12a703f..98ffd73 100644 --- a/src/include/liburing.h +++ b/src/include/liburing.h @@ -235,6 +235,9 @@ int io_uring_register_sync_cancel(struct io_uring *ring, int io_uring_register_file_alloc_range(struct io_uring *ring, unsigned off, unsigned len); +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_get_events(struct io_uring *ring); int io_uring_submit_and_get_events(struct io_uring *ring); diff --git a/src/include/liburing/io_uring.h b/src/include/liburing/io_uring.h index a3e0920..25caee3 100644 --- a/src/include/liburing/io_uring.h +++ b/src/include/liburing/io_uring.h @@ -499,6 +499,10 @@ enum { /* register a range of fixed file slots for automatic slot allocation */ IORING_REGISTER_FILE_ALLOC_RANGE = 25, + /* set/clear busy poll settings */ + IORING_REGISTER_NAPI = 26, + IORING_UNREGISTER_NAPI = 27, + /* this goes last */ IORING_REGISTER_LAST }; @@ -621,6 +625,14 @@ struct io_uring_buf_reg { __u64 resv[3]; }; +/* argument for IORING_(UN)REGISTER_NAPI */ +struct io_uring_napi { + __u32 busy_poll_to; + __u8 prefer_busy_poll; + __u8 pad[3]; + __u64 resv; +}; + /* * io_uring_restriction->opcode values */ diff --git a/src/liburing.map b/src/liburing.map index 06c64f8..74036d3 100644 --- a/src/liburing.map +++ b/src/liburing.map @@ -67,3 +67,9 @@ LIBURING_2.3 { io_uring_get_events; io_uring_submit_and_get_events; } LIBURING_2.2; + +LIBURING_2.4 { + global: + io_uring_register_napi; + io_uring_unregister_napi; +} LIBURING_2.3; diff --git a/src/register.c b/src/register.c index e849825..9b363e0 100644 --- a/src/register.c +++ b/src/register.c @@ -367,3 +367,15 @@ int io_uring_register_file_alloc_range(struct io_uring *ring, IORING_REGISTER_FILE_ALLOC_RANGE, &range, 0); } + +int io_uring_register_napi(struct io_uring *ring, struct io_uring_napi *napi) +{ + return __sys_io_uring_register(ring->ring_fd, + IORING_REGISTER_NAPI, napi, 0); +} + +int io_uring_unregister_napi(struct io_uring *ring, struct io_uring_napi *napi) +{ + return __sys_io_uring_register(ring->ring_fd, + IORING_REGISTER_NAPI, napi, 0); +}
This adds two functions to manage the napi busy poll settings: - io_uring_register_napi - io_uring_unregister_napi Signed-off-by: Stefan Roesch <shr@devkernel.io> --- src/include/liburing.h | 3 +++ src/include/liburing/io_uring.h | 12 ++++++++++++ src/liburing.map | 6 ++++++ src/register.c | 12 ++++++++++++ 4 files changed, 33 insertions(+)