Messages in this thread | | | From | Ammar Faizi <> | Subject | [RFC PATCH liburing v1 0/4] Export io_uring syscall functions | Date | Mon, 29 Aug 2022 10:07:35 +0700 |
| |
From: Ammar Faizi <ammarfaizi2@gnuweeb.org>
Hi Jens,
The background story of this series comes from the recent conversation with Caleb Sander at:
https://github.com/axboe/liburing/pull/646#issuecomment-1229639532
What do you think of this series?
There are 4 patches in this series.
1) syscall: Add io_uring syscall functions
We have:
man 2 io_uring_setup; man 2 io_uring_enter; man 2 io_uring_register;
Those entries say that io_uring syscall functions are declared in `<linux/io_uring.h>`. But they don't actually exist and never existed. This is causing confusion for people who read the manpage. Let's just implement them in liburing so they exist.
This also allows the user to invoke io_uring syscalls directly instead of using the full liburing provided setup.
2) Clarify "man 2" entry for io_uring.
io_uring_enter(), io_uring_register(), io_uring_setup() are not declared in `<linux/io_uring.h>` and never were. Plus, these functions don't intentionally set the `errno` variable. Reflect this fact in the manpage.
Side note: On architectures other than x86, x86-64, and aarch64, those functions _do_ set the `errno`, this is because the syscall is done via libc as we don't yet have nolibc support for the mentioned archs. Users should not rely on this behavior.
3) man: Alias `io_uring_enter2()` to `io_uring_enter()`.
We have a new function io_uring_enter2(), add the man page entry for it by aliasing it to io_uring_enter(). This aliased man entry has already explained it.
4) test/io_uring_{enter,setup,register}: Use the exported syscall functions.
These tests use the internal definition of __sys_io_uring* functions. A previous commit exported new functions that do the same thing with those __sys_io_uring* functions. Test the exported functions instead of the internal functions.
No functional change is intended.
Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org> ---
Ammar Faizi (4): syscall: Add io_uring syscall functions man: Clarify "man 2" entry for io_uring syscalls man: Alias `io_uring_enter2()` to `io_uring_enter()` test/io_uring_{enter,setup,register}: Use the exported syscall functions
man/io_uring_enter.2 | 9 ++++----- man/io_uring_enter2.2 | 1 + man/io_uring_register.2 | 9 ++++----- man/io_uring_setup.2 | 8 +++----- src/Makefile | 2 +- src/include/liburing.h | 8 ++++++++ src/liburing.map | 4 ++++ src/syscall.c | 30 ++++++++++++++++++++++++++++++ test/io_uring_enter.c | 10 +++++----- test/io_uring_register.c | 34 ++++++++++++++++------------------ test/io_uring_setup.c | 4 ++-- 11 files changed, 78 insertions(+), 41 deletions(-) create mode 120000 man/io_uring_enter2.2 create mode 100644 src/syscall.c
base-commit: bf248850dc2ae45d29d4fdde688e90d24f3dd6d2 -- Ammar Faizi
| |