1de23077eSJens Axboe #ifndef IOU_CORE_H 2de23077eSJens Axboe #define IOU_CORE_H 3de23077eSJens Axboe 4de23077eSJens Axboe #include <linux/errno.h> 5de23077eSJens Axboe #include "io_uring_types.h" 6de23077eSJens Axboe 797b388d7SJens Axboe enum { 897b388d7SJens Axboe IOU_OK = 0, 997b388d7SJens Axboe IOU_ISSUE_SKIP_COMPLETE = -EIOCBQUEUED, 1097b388d7SJens Axboe }; 1197b388d7SJens Axboe 12*531113bbSJens Axboe static inline void req_set_fail(struct io_kiocb *req) 13*531113bbSJens Axboe { 14*531113bbSJens Axboe req->flags |= REQ_F_FAIL; 15*531113bbSJens Axboe if (req->flags & REQ_F_CQE_SKIP) { 16*531113bbSJens Axboe req->flags &= ~REQ_F_CQE_SKIP; 17*531113bbSJens Axboe req->flags |= REQ_F_SKIP_LINK_CQES; 18*531113bbSJens Axboe } 19*531113bbSJens Axboe } 20*531113bbSJens Axboe 21de23077eSJens Axboe static inline void io_req_set_res(struct io_kiocb *req, s32 res, u32 cflags) 22de23077eSJens Axboe { 23de23077eSJens Axboe req->cqe.res = res; 24de23077eSJens Axboe req->cqe.flags = cflags; 25de23077eSJens Axboe } 26de23077eSJens Axboe 27*531113bbSJens Axboe static inline void io_put_file(struct file *file) 28*531113bbSJens Axboe { 29*531113bbSJens Axboe if (file) 30*531113bbSJens Axboe fput(file); 31*531113bbSJens Axboe } 32*531113bbSJens Axboe 33*531113bbSJens Axboe struct file *io_file_get_normal(struct io_kiocb *req, int fd); 34*531113bbSJens Axboe struct file *io_file_get_fixed(struct io_kiocb *req, int fd, 35*531113bbSJens Axboe unsigned issue_flags); 36*531113bbSJens Axboe 37de23077eSJens Axboe #endif 38