mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.0 KiB
85 lines
2.0 KiB
/* SPDX-License-Identifier: GPL-2.0-or-later */ |
|
#ifndef _LINUX_IO_URING_H |
|
#define _LINUX_IO_URING_H |
|
|
|
#include <linux/sched.h> |
|
#include <linux/xarray.h> |
|
|
|
enum io_uring_cmd_flags { |
|
IO_URING_F_COMPLETE_DEFER = 1, |
|
IO_URING_F_UNLOCKED = 2, |
|
/* int's last bit, sign checks are usually faster than a bit test */ |
|
IO_URING_F_NONBLOCK = INT_MIN, |
|
|
|
/* ctx state flags, for URING_CMD */ |
|
IO_URING_F_SQE128 = 4, |
|
IO_URING_F_CQE32 = 8, |
|
IO_URING_F_IOPOLL = 16, |
|
}; |
|
|
|
struct io_uring_cmd { |
|
struct file *file; |
|
const void *cmd; |
|
/* callback to defer completions to task context */ |
|
void (*task_work_cb)(struct io_uring_cmd *cmd); |
|
u32 cmd_op; |
|
u32 pad; |
|
u8 pdu[32]; /* available inline for free use */ |
|
}; |
|
|
|
#if defined(CONFIG_IO_URING) |
|
void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2); |
|
void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, |
|
void (*task_work_cb)(struct io_uring_cmd *)); |
|
struct sock *io_uring_get_socket(struct file *file); |
|
void __io_uring_cancel(bool cancel_all); |
|
void __io_uring_free(struct task_struct *tsk); |
|
void io_uring_unreg_ringfd(void); |
|
const char *io_uring_get_opcode(u8 opcode); |
|
|
|
static inline void io_uring_files_cancel(void) |
|
{ |
|
if (current->io_uring) { |
|
io_uring_unreg_ringfd(); |
|
__io_uring_cancel(false); |
|
} |
|
} |
|
static inline void io_uring_task_cancel(void) |
|
{ |
|
if (current->io_uring) |
|
__io_uring_cancel(true); |
|
} |
|
static inline void io_uring_free(struct task_struct *tsk) |
|
{ |
|
if (tsk->io_uring) |
|
__io_uring_free(tsk); |
|
} |
|
#else |
|
static inline void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, |
|
ssize_t ret2) |
|
{ |
|
} |
|
static inline void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, |
|
void (*task_work_cb)(struct io_uring_cmd *)) |
|
{ |
|
} |
|
static inline struct sock *io_uring_get_socket(struct file *file) |
|
{ |
|
return NULL; |
|
} |
|
static inline void io_uring_task_cancel(void) |
|
{ |
|
} |
|
static inline void io_uring_files_cancel(void) |
|
{ |
|
} |
|
static inline void io_uring_free(struct task_struct *tsk) |
|
{ |
|
} |
|
static inline const char *io_uring_get_opcode(u8 opcode) |
|
{ |
|
return ""; |
|
} |
|
#endif |
|
|
|
#endif
|
|
|