xref: /openbmc/linux/io_uring/io_uring.h (revision 531113bb)
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