forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
io_uring: split out cmd api into a separate header
linux/io_uring.h is slowly becoming a rubbish bin where we put anything exposed to other subsystems. For instance, the task exit hooks and io_uring cmd infra are completely orthogonal and don't need each other's definitions. Start cleaning it up by splitting out all command bits into a new header file. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/7ec50bae6e21f371d3850796e716917fc141225a.1701391955.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
- Loading branch information
Showing
11 changed files
with
110 additions
and
94 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-or-later */ | ||
#ifndef _LINUX_IO_URING_CMD_H | ||
#define _LINUX_IO_URING_CMD_H | ||
|
||
#include <uapi/linux/io_uring.h> | ||
#include <linux/io_uring_types.h> | ||
|
||
/* only top 8 bits of sqe->uring_cmd_flags for kernel internal use */ | ||
#define IORING_URING_CMD_CANCELABLE (1U << 30) | ||
#define IORING_URING_CMD_POLLED (1U << 31) | ||
|
||
struct io_uring_cmd { | ||
struct file *file; | ||
const struct io_uring_sqe *sqe; | ||
union { | ||
/* callback to defer completions to task context */ | ||
void (*task_work_cb)(struct io_uring_cmd *cmd, unsigned); | ||
/* used for polled completion */ | ||
void *cookie; | ||
}; | ||
u32 cmd_op; | ||
u32 flags; | ||
u8 pdu[32]; /* available inline for free use */ | ||
}; | ||
|
||
static inline const void *io_uring_sqe_cmd(const struct io_uring_sqe *sqe) | ||
{ | ||
return sqe->cmd; | ||
} | ||
|
||
#if defined(CONFIG_IO_URING) | ||
int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, | ||
struct iov_iter *iter, void *ioucmd); | ||
void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2, | ||
unsigned issue_flags); | ||
void __io_uring_cmd_do_in_task(struct io_uring_cmd *ioucmd, | ||
void (*task_work_cb)(struct io_uring_cmd *, unsigned), | ||
unsigned flags); | ||
/* users should follow semantics of IOU_F_TWQ_LAZY_WAKE */ | ||
void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd, | ||
void (*task_work_cb)(struct io_uring_cmd *, unsigned)); | ||
|
||
static inline void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, | ||
void (*task_work_cb)(struct io_uring_cmd *, unsigned)) | ||
{ | ||
__io_uring_cmd_do_in_task(ioucmd, task_work_cb, 0); | ||
} | ||
|
||
void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd, | ||
unsigned int issue_flags); | ||
struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd); | ||
|
||
#else | ||
static inline int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, | ||
struct iov_iter *iter, void *ioucmd) | ||
{ | ||
return -EOPNOTSUPP; | ||
} | ||
static inline void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, | ||
ssize_t ret2, unsigned issue_flags) | ||
{ | ||
} | ||
static inline void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, | ||
void (*task_work_cb)(struct io_uring_cmd *, unsigned)) | ||
{ | ||
} | ||
static inline void io_uring_cmd_do_in_task_lazy(struct io_uring_cmd *ioucmd, | ||
void (*task_work_cb)(struct io_uring_cmd *, unsigned)) | ||
{ | ||
} | ||
static inline void io_uring_cmd_mark_cancelable(struct io_uring_cmd *cmd, | ||
unsigned int issue_flags) | ||
{ | ||
} | ||
static inline struct task_struct *io_uring_cmd_get_task(struct io_uring_cmd *cmd) | ||
{ | ||
return NULL; | ||
} | ||
#endif | ||
|
||
#endif /* _LINUX_IO_URING_CMD_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters