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 int 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