* [PATCH 0/2] mini-liburing updates
@ 2026-01-20 21:11 Pavel Begunkov
2026-01-20 21:11 ` [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params Pavel Begunkov
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Pavel Begunkov @ 2026-01-20 21:11 UTC (permalink / raw)
To: io-uring; +Cc: asml.silence, axboe
Update mini-liburing with NO_SQARRAY and io_uring_queue_init_params()
support. Sending these separately to get rid of dependencies, but
they're also nice to have while writing selftests.
Pavel Begunkov (2):
selftests/io_uring: add io_uring_queue_init_params
selftests/io_uring: support NO_SQARRAY in miniliburing
tools/include/io_uring/mini_liburing.h | 59 +++++++++++++++++++-------
1 file changed, 44 insertions(+), 15 deletions(-)
--
2.52.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params
2026-01-20 21:11 [PATCH 0/2] mini-liburing updates Pavel Begunkov
@ 2026-01-20 21:11 ` Pavel Begunkov
2026-01-20 21:11 ` [PATCH 2/2] selftests/io_uring: support NO_SQARRAY in miniliburing Pavel Begunkov
2026-01-21 14:55 ` [PATCH 0/2] mini-liburing updates Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Pavel Begunkov @ 2026-01-20 21:11 UTC (permalink / raw)
To: io-uring; +Cc: asml.silence, axboe
Add a ring init variant taking struct io_uring_params, which mimicks
liburing API.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
tools/include/io_uring/mini_liburing.h | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/tools/include/io_uring/mini_liburing.h b/tools/include/io_uring/mini_liburing.h
index 9ccb16074eb5..a55407b09dbb 100644
--- a/tools/include/io_uring/mini_liburing.h
+++ b/tools/include/io_uring/mini_liburing.h
@@ -126,21 +126,18 @@ static inline int io_uring_enter(int fd, unsigned int to_submit,
flags, sig, _NSIG / 8);
}
-static inline int io_uring_queue_init(unsigned int entries,
- struct io_uring *ring,
- unsigned int flags)
+static inline int io_uring_queue_init_params(unsigned int entries,
+ struct io_uring *ring,
+ struct io_uring_params *p)
{
- struct io_uring_params p;
int fd, ret;
memset(ring, 0, sizeof(*ring));
- memset(&p, 0, sizeof(p));
- p.flags = flags;
- fd = io_uring_setup(entries, &p);
+ fd = io_uring_setup(entries, p);
if (fd < 0)
return fd;
- ret = io_uring_mmap(fd, &p, &ring->sq, &ring->cq);
+ ret = io_uring_mmap(fd, p, &ring->sq, &ring->cq);
if (!ret)
ring->ring_fd = fd;
else
@@ -148,6 +145,18 @@ static inline int io_uring_queue_init(unsigned int entries,
return ret;
}
+static inline int io_uring_queue_init(unsigned int entries,
+ struct io_uring *ring,
+ unsigned int flags)
+{
+ struct io_uring_params p;
+
+ memset(&p, 0, sizeof(p));
+ p.flags = flags;
+
+ return io_uring_queue_init_params(entries, ring, &p);
+}
+
/* Get a sqe */
static inline struct io_uring_sqe *io_uring_get_sqe(struct io_uring *ring)
{
--
2.52.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] selftests/io_uring: support NO_SQARRAY in miniliburing
2026-01-20 21:11 [PATCH 0/2] mini-liburing updates Pavel Begunkov
2026-01-20 21:11 ` [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params Pavel Begunkov
@ 2026-01-20 21:11 ` Pavel Begunkov
2026-01-21 14:55 ` [PATCH 0/2] mini-liburing updates Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Pavel Begunkov @ 2026-01-20 21:11 UTC (permalink / raw)
To: io-uring; +Cc: asml.silence, axboe
Add support for IORING_SETUP_NO_SQARRAY in miniliburing.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
tools/include/io_uring/mini_liburing.h | 34 ++++++++++++++++++++------
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/tools/include/io_uring/mini_liburing.h b/tools/include/io_uring/mini_liburing.h
index a55407b09dbb..44be4446feda 100644
--- a/tools/include/io_uring/mini_liburing.h
+++ b/tools/include/io_uring/mini_liburing.h
@@ -6,6 +6,7 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
+#include <sys/uio.h>
struct io_sq_ring {
unsigned int *head;
@@ -55,6 +56,7 @@ struct io_uring {
struct io_uring_sq sq;
struct io_uring_cq cq;
int ring_fd;
+ unsigned flags;
};
#if defined(__x86_64) || defined(__i386__)
@@ -72,7 +74,14 @@ static inline int io_uring_mmap(int fd, struct io_uring_params *p,
void *ptr;
int ret;
- sq->ring_sz = p->sq_off.array + p->sq_entries * sizeof(unsigned int);
+ if (p->flags & IORING_SETUP_NO_SQARRAY) {
+ sq->ring_sz = p->cq_off.cqes;
+ sq->ring_sz += p->cq_entries * sizeof(struct io_uring_cqe);
+ } else {
+ sq->ring_sz = p->sq_off.array;
+ sq->ring_sz += p->sq_entries * sizeof(unsigned int);
+ }
+
ptr = mmap(0, sq->ring_sz, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_POPULATE, fd, IORING_OFF_SQ_RING);
if (ptr == MAP_FAILED)
@@ -83,7 +92,8 @@ static inline int io_uring_mmap(int fd, struct io_uring_params *p,
sq->kring_entries = ptr + p->sq_off.ring_entries;
sq->kflags = ptr + p->sq_off.flags;
sq->kdropped = ptr + p->sq_off.dropped;
- sq->array = ptr + p->sq_off.array;
+ if (!(p->flags & IORING_SETUP_NO_SQARRAY))
+ sq->array = ptr + p->sq_off.array;
size = p->sq_entries * sizeof(struct io_uring_sqe);
sq->sqes = mmap(0, size, PROT_READ | PROT_WRITE,
@@ -138,10 +148,12 @@ static inline int io_uring_queue_init_params(unsigned int entries,
if (fd < 0)
return fd;
ret = io_uring_mmap(fd, p, &ring->sq, &ring->cq);
- if (!ret)
+ if (!ret) {
ring->ring_fd = fd;
- else
+ ring->flags = p->flags;
+ } else {
close(fd);
+ }
return ret;
}
@@ -208,10 +220,18 @@ static inline int io_uring_submit(struct io_uring *ring)
ktail = *sq->ktail;
to_submit = sq->sqe_tail - sq->sqe_head;
- for (submitted = 0; submitted < to_submit; submitted++) {
- read_barrier();
- sq->array[ktail++ & mask] = sq->sqe_head++ & mask;
+
+ if (!(ring->flags & IORING_SETUP_NO_SQARRAY)) {
+ for (submitted = 0; submitted < to_submit; submitted++) {
+ read_barrier();
+ sq->array[ktail++ & mask] = sq->sqe_head++ & mask;
+ }
+ } else {
+ ktail += to_submit;
+ sq->sqe_head += to_submit;
+ submitted = to_submit;
}
+
if (!submitted)
return 0;
--
2.52.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] mini-liburing updates
2026-01-20 21:11 [PATCH 0/2] mini-liburing updates Pavel Begunkov
2026-01-20 21:11 ` [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params Pavel Begunkov
2026-01-20 21:11 ` [PATCH 2/2] selftests/io_uring: support NO_SQARRAY in miniliburing Pavel Begunkov
@ 2026-01-21 14:55 ` Jens Axboe
2 siblings, 0 replies; 4+ messages in thread
From: Jens Axboe @ 2026-01-21 14:55 UTC (permalink / raw)
To: io-uring, Pavel Begunkov
On Tue, 20 Jan 2026 21:11:43 +0000, Pavel Begunkov wrote:
> Update mini-liburing with NO_SQARRAY and io_uring_queue_init_params()
> support. Sending these separately to get rid of dependencies, but
> they're also nice to have while writing selftests.
>
> Pavel Begunkov (2):
> selftests/io_uring: add io_uring_queue_init_params
> selftests/io_uring: support NO_SQARRAY in miniliburing
>
> [...]
Applied, thanks!
[1/2] selftests/io_uring: add io_uring_queue_init_params
commit: 73061dbeca783aaf311e1af9610f8cba1c1176cd
[2/2] selftests/io_uring: support NO_SQARRAY in miniliburing
commit: 145e0074392587606aa5df353d0e761f0b8357d5
Best regards,
--
Jens Axboe
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-01-21 14:55 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-20 21:11 [PATCH 0/2] mini-liburing updates Pavel Begunkov
2026-01-20 21:11 ` [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params Pavel Begunkov
2026-01-20 21:11 ` [PATCH 2/2] selftests/io_uring: support NO_SQARRAY in miniliburing Pavel Begunkov
2026-01-21 14:55 ` [PATCH 0/2] mini-liburing updates Jens Axboe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.