1 // SPDX-License-Identifier: GPL-2.0
2 
3 struct io_sq_data {
4 	refcount_t		refs;
5 	atomic_t		park_pending;
6 	struct mutex		lock;
7 
8 	/* ctx's that are using this sqd */
9 	struct list_head	ctx_list;
10 
11 	struct task_struct	*thread;
12 	struct wait_queue_head	wait;
13 
14 	unsigned		sq_thread_idle;
15 	int			sq_cpu;
16 	pid_t			task_pid;
17 	pid_t			task_tgid;
18 
19 	unsigned long		state;
20 	struct completion	exited;
21 };
22 
23 int io_sq_offload_create(struct io_ring_ctx *ctx, struct io_uring_params *p);
24 void io_sq_thread_finish(struct io_ring_ctx *ctx);
25 void io_sq_thread_stop(struct io_sq_data *sqd);
26 void io_sq_thread_park(struct io_sq_data *sqd);
27 void io_sq_thread_unpark(struct io_sq_data *sqd);
28 void io_put_sq_data(struct io_sq_data *sqd);
29 void io_sqpoll_wait_sq(struct io_ring_ctx *ctx);
30 int io_sqpoll_wq_cpu_affinity(struct io_ring_ctx *ctx, cpumask_var_t mask);
31