This adds three functions to manage the napi busy poll settings: - io_uring_register_napi_busy_poll_timeout - io_uring_unregister_napi_busy_poll_timeout - io_uring_register_napi_prefer_busy_poll Signed-off-by: Stefan Roesch <shr@xxxxxxxxxxxx> --- src/include/liburing.h | 6 ++++++ src/include/liburing/io_uring.h | 4 ++++ src/liburing.map | 7 +++++++ src/register.c | 23 +++++++++++++++++++++++ 4 files changed, 40 insertions(+) diff --git a/src/include/liburing.h b/src/include/liburing.h index 12a703f..47bbced 100644 --- a/src/include/liburing.h +++ b/src/include/liburing.h @@ -235,6 +235,12 @@ 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_prefer_busy_poll(struct io_uring *ring, + bool prefer_busy_poll); +int io_uring_register_napi_busy_poll_timeout(struct io_uring *ring, + unsigned int to); +int io_uring_unregister_napi_busy_poll_timeout(struct io_uring *ring); + 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..2e53f52 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_PREFER_BUSY_POLL = 26, + IORING_REGISTER_NAPI_BUSY_POLL_TIMEOUT = 27, + /* this goes last */ IORING_REGISTER_LAST }; diff --git a/src/liburing.map b/src/liburing.map index 06c64f8..2e41a40 100644 --- a/src/liburing.map +++ b/src/liburing.map @@ -67,3 +67,10 @@ LIBURING_2.3 { io_uring_get_events; io_uring_submit_and_get_events; } LIBURING_2.2; + +LIBURING_2.4 { + global: + io_uring_napi_register_prefer_busy_poll; + io_uring_napi_register_busy_poll_timeout; + io_uring_napi_unregister_busy_poll_timeout; +} LIBURING_2.3; diff --git a/src/register.c b/src/register.c index e849825..50250b8 100644 --- a/src/register.c +++ b/src/register.c @@ -367,3 +367,26 @@ int io_uring_register_file_alloc_range(struct io_uring *ring, IORING_REGISTER_FILE_ALLOC_RANGE, &range, 0); } + +int io_uring_register_napi_prefer_busy_poll(struct io_uring *ring, + bool prefer_busy_poll) +{ + return __sys_io_uring_register(ring->ring_fd, + IORING_REGISTER_NAPI_PREFER_BUSY_POLL, + NULL, prefer_busy_poll); +} + +int io_uring_register_napi_busy_poll_timeout(struct io_uring *ring, + unsigned int to) +{ + return __sys_io_uring_register(ring->ring_fd, + IORING_REGISTER_NAPI_BUSY_POLL_TIMEOUT, + NULL, to); +} + +int io_uring_unregister_napi_busy_poll_timeout(struct io_uring *ring) +{ + return __sys_io_uring_register(ring->ring_fd, + IORING_REGISTER_NAPI_BUSY_POLL_TIMEOUT, + NULL, 0); +} -- 2.30.2