Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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(¤t->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(¤t->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