5#include "di/sync/prelude.h"
6#include "di/vocab/error/prelude.h"
12 using SQE =
struct io_uring_sqe;
13 using CQE =
struct io_uring_cqe;
16 auto sys_enter(
unsigned int fd,
unsigned int to_submit,
unsigned int min_complete,
unsigned int flags,
17 void const* arg,
size_t arg_size) -> di::Result<int>;
18 auto sys_register(
unsigned int fd,
unsigned int op_code,
void* arg,
unsigned int nr_args) -> di::Result<int>;
23 static auto create() -> di::Result<IoUringHandle>;
31 IoUringHandle() =
default;
38 di::Atomic<unsigned int>
const* sq_head;
39 di::Atomic<unsigned int>* sq_tail;
40 di::Atomic<unsigned int>
const* sq_flags;
46 di::Atomic<unsigned int>* cq_head;
47 di::Atomic<unsigned int>
const* cq_tail;
48 di::Atomic<unsigned int>
const* cq_overflow;
Definition memory_region.h:6
Definition sync_file.h:40
static auto create() -> di::Result< IoUringHandle >
auto get_next_sqe() -> di::Optional< SQE & >
auto get_next_cqe() -> di::Optional< CQE & >
auto submit_and_wait() -> di::Result< void >
struct io_uring_sqe SQE
Definition io_uring.h:12
struct io_uring_cqe CQE
Definition io_uring.h:13
auto sys_enter(unsigned int fd, unsigned int to_submit, unsigned int min_complete, unsigned int flags, void const *arg, size_t arg_size) -> di::Result< int >
auto sys_setup(u32 entries, SetupParams *params) -> di::Result< SyncFile >
auto sys_register(unsigned int fd, unsigned int op_code, void *arg, unsigned int nr_args) -> di::Result< int >
struct io_uring_params SetupParams
Definition io_uring.h:14