From f93c84e1b07474a7d776403b3516feeff4f3c933 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 8 Jan 2019 06:51:07 -0700 Subject: Initial commit Signed-off-by: Jens Axboe --- src/liburing.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/liburing.h (limited to 'src/liburing.h') diff --git a/src/liburing.h b/src/liburing.h new file mode 100644 index 0000000..454591a --- /dev/null +++ b/src/liburing.h @@ -0,0 +1,57 @@ +#ifndef LIB_URING_H +#define LIB_URING_H + +#include +#include "io_uring.h" + +/* + * Library interface to io_uring + */ +struct io_uring_sq { + unsigned *khead; + unsigned *ktail; + unsigned *kring_mask; + unsigned *kring_entries; + unsigned *kflags; + unsigned *kdropped; + unsigned *array; + struct io_uring_iocb *iocbs; + + unsigned iocb_head; + unsigned iocb_tail; + + size_t ring_sz; +}; + +struct io_uring_cq { + unsigned *khead; + unsigned *ktail; + unsigned *kring_mask; + unsigned *kring_entries; + unsigned *koverflow; + struct io_uring_event *events; + + size_t ring_sz; +}; + +/* + * System calls + */ +extern int io_uring_setup(unsigned entries, struct iovec *iovecs, + struct io_uring_params *p); +extern int io_uring_enter(unsigned fd, unsigned to_submit, + unsigned min_complete, unsigned flags); + +/* + * Library interface + */ +extern int io_uring_queue_init(unsigned entries, struct io_uring_params *p, + struct iovec *iovecs, struct io_uring_sq *sq, struct io_uring_cq *cq); +extern void io_uring_queue_exit(int fd, struct io_uring_sq *sq, + struct io_uring_cq *cq); +extern int io_uring_get_completion(int fd, struct io_uring_cq *cq, + struct io_uring_event **ev_ptr); +extern int io_uring_submit(int fd, struct io_uring_sq *sq); +extern struct io_uring_iocb *io_uring_get_iocb(struct io_uring_sq *sq); + +#endif -- cgit