1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 #ifndef _LINUX_IO_URING_H 3 #define _LINUX_IO_URING_H 4 5 #include <linux/sched.h> 6 #include <linux/xarray.h> 7 8 struct io_identity { 9 struct files_struct *files; 10 struct mm_struct *mm; 11 #ifdef CONFIG_BLK_CGROUP 12 struct cgroup_subsys_state *blkcg_css; 13 #endif 14 const struct cred *creds; 15 struct nsproxy *nsproxy; 16 struct fs_struct *fs; 17 unsigned long fsize; 18 #ifdef CONFIG_AUDIT 19 kuid_t loginuid; 20 unsigned int sessionid; 21 #endif 22 refcount_t count; 23 }; 24 25 struct io_uring_task { 26 /* submission side */ 27 struct xarray xa; 28 struct wait_queue_head wait; 29 struct file *last; 30 struct percpu_counter inflight; 31 struct io_identity __identity; 32 struct io_identity *identity; 33 atomic_t in_idle; 34 bool sqpoll; 35 }; 36 37 #if defined(CONFIG_IO_URING) 38 struct sock *io_uring_get_socket(struct file *file); 39 void __io_uring_task_cancel(void); 40 void __io_uring_files_cancel(struct files_struct *files); 41 void __io_uring_free(struct task_struct *tsk); 42 io_uring_task_cancel(void)43static inline void io_uring_task_cancel(void) 44 { 45 if (current->io_uring && !xa_empty(¤t->io_uring->xa)) 46 __io_uring_task_cancel(); 47 } io_uring_files_cancel(struct files_struct * files)48static inline void io_uring_files_cancel(struct files_struct *files) 49 { 50 if (current->io_uring && !xa_empty(¤t->io_uring->xa)) 51 __io_uring_files_cancel(files); 52 } io_uring_free(struct task_struct * tsk)53static inline void io_uring_free(struct task_struct *tsk) 54 { 55 if (tsk->io_uring) 56 __io_uring_free(tsk); 57 } 58 #else io_uring_get_socket(struct file * file)59static inline struct sock *io_uring_get_socket(struct file *file) 60 { 61 return NULL; 62 } io_uring_task_cancel(void)63static inline void io_uring_task_cancel(void) 64 { 65 } io_uring_files_cancel(struct files_struct * files)66static inline void io_uring_files_cancel(struct files_struct *files) 67 { 68 } io_uring_free(struct task_struct * tsk)69static inline void io_uring_free(struct task_struct *tsk) 70 { 71 } 72 #endif 73 74 #endif 75