diff options
author | Jens Axboe <axboe@kernel.dk> | 2019-01-08 06:51:07 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-01-08 07:38:15 -0700 |
commit | f93c84e1b07474a7d776403b3516feeff4f3c933 (patch) | |
tree | 4b71b6a4013c643d669398fdb8f33f74b6081cd2 /src/liburing.h |
Initial commit
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'src/liburing.h')
-rw-r--r-- | src/liburing.h | 57 |
1 files changed, 57 insertions, 0 deletions
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 <sys/uio.h> +#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 |