The only real hot system call here is the io_uring_enter(2) call,
as that'll happen during the IO submission/completion parts. The rest
are just setup function calls, we don't really care about those.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
static int io_uring_enter(struct ioring_data *ld, unsigned int to_submit,
unsigned int min_complete, unsigned int flags)
{
static int io_uring_enter(struct ioring_data *ld, unsigned int to_submit,
unsigned int min_complete, unsigned int flags)
{
+#ifdef FIO_ARCH_HAS_SYSCALL
+ return __do_syscall6(__NR_io_uring_enter, ld->ring_fd, to_submit,
+ min_complete, flags, NULL, 0);
+#else
return syscall(__NR_io_uring_enter, ld->ring_fd, to_submit,
min_complete, flags, NULL, 0);
return syscall(__NR_io_uring_enter, ld->ring_fd, to_submit,
min_complete, flags, NULL, 0);
}
static int fio_ioring_prep(struct thread_data *td, struct io_u *io_u)
}
static int fio_ioring_prep(struct thread_data *td, struct io_u *io_u)
static int io_uring_enter(struct submitter *s, unsigned int to_submit,
unsigned int min_complete, unsigned int flags)
{
static int io_uring_enter(struct submitter *s, unsigned int to_submit,
unsigned int min_complete, unsigned int flags)
{
+#ifdef FIO_ARCH_HAS_SYSCALL
+ return __do_syscall6(__NR_io_uring_enter, s->ring_fd, to_submit,
+ min_complete, flags, NULL, 0);
+#else
return syscall(__NR_io_uring_enter, s->ring_fd, to_submit, min_complete,
flags, NULL, 0);
return syscall(__NR_io_uring_enter, s->ring_fd, to_submit, min_complete,
flags, NULL, 0);
}
#ifndef CONFIG_HAVE_GETTID
}
#ifndef CONFIG_HAVE_GETTID