at v5.10 1.7 kB view raw
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 8struct 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 25struct 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) 38struct sock *io_uring_get_socket(struct file *file); 39void __io_uring_task_cancel(void); 40void __io_uring_files_cancel(struct files_struct *files); 41void __io_uring_free(struct task_struct *tsk); 42 43static inline void io_uring_task_cancel(void) 44{ 45 if (current->io_uring && !xa_empty(&current->io_uring->xa)) 46 __io_uring_task_cancel(); 47} 48static inline void io_uring_files_cancel(struct files_struct *files) 49{ 50 if (current->io_uring && !xa_empty(&current->io_uring->xa)) 51 __io_uring_files_cancel(files); 52} 53static inline void io_uring_free(struct task_struct *tsk) 54{ 55 if (tsk->io_uring) 56 __io_uring_free(tsk); 57} 58#else 59static inline struct sock *io_uring_get_socket(struct file *file) 60{ 61 return NULL; 62} 63static inline void io_uring_task_cancel(void) 64{ 65} 66static inline void io_uring_files_cancel(struct files_struct *files) 67{ 68} 69static inline void io_uring_free(struct task_struct *tsk) 70{ 71} 72#endif 73 74#endif