blob: 4171666b1cf4cc37b84cb4079483bdf7b762add1 [file] [log] [blame]
Jens Axboe17437f32022-05-25 09:13:39 -06001// SPDX-License-Identifier: GPL-2.0
2
3struct 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
Xiaobing Li3fcb9d172024-02-28 17:12:51 +080019 u64 work_time;
Jens Axboe17437f32022-05-25 09:13:39 -060020 unsigned long state;
21 struct completion exited;
22};
23
24int io_sq_offload_create(struct io_ring_ctx *ctx, struct io_uring_params *p);
25void io_sq_thread_finish(struct io_ring_ctx *ctx);
26void io_sq_thread_stop(struct io_sq_data *sqd);
27void io_sq_thread_park(struct io_sq_data *sqd);
28void io_sq_thread_unpark(struct io_sq_data *sqd);
29void io_put_sq_data(struct io_sq_data *sqd);
Quanfa Fu88b80532023-01-15 15:15:19 +080030void io_sqpoll_wait_sq(struct io_ring_ctx *ctx);
Jens Axboeebdfefc2023-08-13 11:05:36 -060031int io_sqpoll_wq_cpu_affinity(struct io_ring_ctx *ctx, cpumask_var_t mask);