1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /* 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>
- struct io_identity {
- struct files_struct *files;
- struct mm_struct *mm;
- #ifdef CONFIG_BLK_CGROUP
- struct cgroup_subsys_state *blkcg_css;
- #endif
- const struct cred *creds;
- struct nsproxy *nsproxy;
- struct fs_struct *fs;
- unsigned long fsize;
- #ifdef CONFIG_AUDIT
- kuid_t loginuid;
- unsigned int sessionid;
- #endif
- refcount_t count;
- };
- struct io_uring_task {
- /* submission side */
- struct xarray xa;
- struct wait_queue_head wait;
- struct file *last;
- struct percpu_counter inflight;
- struct io_identity __identity;
- struct io_identity *identity;
- atomic_t in_idle;
- bool sqpoll;
- };
- #if defined(CONFIG_IO_URING)
- struct sock *io_uring_get_socket(struct file *file);
- void __io_uring_task_cancel(void);
- void __io_uring_files_cancel(struct files_struct *files);
- void __io_uring_free(struct task_struct *tsk);
- static inline void io_uring_task_cancel(void)
- {
- if (current->io_uring && !xa_empty(¤t->io_uring->xa))
- __io_uring_task_cancel();
- }
- static inline void io_uring_files_cancel(struct files_struct *files)
- {
- if (current->io_uring && !xa_empty(¤t->io_uring->xa))
- __io_uring_files_cancel(files);
- }
- static inline void io_uring_free(struct task_struct *tsk)
- {
- if (tsk->io_uring)
- __io_uring_free(tsk);
- }
- #else
- 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(struct files_struct *files)
- {
- }
- static inline void io_uring_free(struct task_struct *tsk)
- {
- }
- #endif
- #endif
|