After commit 75b28affdd6a we can get by with just a single mmap to map both the sq and cq ring. However, userspace doesn't know that. Add a features variable to io_uring_params, and notify userspace that the kernel has this ability. This can then be used in liburing (or in applications directly) to avoid the second mmap.
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -128,11 +128,17 @@ struct io_uring_params { · 127 unmodified lines | ||
| 128 | 128 | __u32 flags; |
| 129 | 129 | __u32 sq_thread_cpu; |
| 130 | 130 | __u32 sq_thread_idle; |
| 131 | − __u32 resv[5]; | |
| 131 | + __u32 features; | |
| 132 | + __u32 resv[4]; | |
| 132 | 133 | struct io_sqring_offsets sq_off; |
| 133 | 134 | struct io_cqring_offsets cq_off; |
| 134 | 135 | }; |
| 135 | 136 | |
| 137 | +/* | |
| 138 | + * io_uring_params->features flags | |
| 139 | + */ | |
| 140 | +#define IORING_FEAT_SINGLE_MMAP (1U << 0) | |
| 141 | + | |
| 136 | 142 | /* |
| 137 | 143 | * io_uring_register(2) opcodes and arguments |
| 138 | 144 | */ |