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