2022-05-25 23:13:39 +08:00
|
|
|
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
|
|
|
|
struct io_sq_data {
|
|
|
|
refcount_t refs;
|
|
|
|
atomic_t park_pending;
|
|
|
|
struct mutex lock;
|
|
|
|
|
|
|
|
/* ctx's that are using this sqd */
|
|
|
|
struct list_head ctx_list;
|
|
|
|
|
|
|
|
struct task_struct *thread;
|
|
|
|
struct wait_queue_head wait;
|
|
|
|
|
|
|
|
unsigned sq_thread_idle;
|
|
|
|
int sq_cpu;
|
|
|
|
pid_t task_pid;
|
|
|
|
pid_t task_tgid;
|
|
|
|
|
2024-02-28 17:12:51 +08:00
|
|
|
u64 work_time;
|
2022-05-25 23:13:39 +08:00
|
|
|
unsigned long state;
|
|
|
|
struct completion exited;
|
|
|
|
};
|
|
|
|
|
|
|
|
int io_sq_offload_create(struct io_ring_ctx *ctx, struct io_uring_params *p);
|
|
|
|
void io_sq_thread_finish(struct io_ring_ctx *ctx);
|
|
|
|
void io_sq_thread_stop(struct io_sq_data *sqd);
|
|
|
|
void io_sq_thread_park(struct io_sq_data *sqd);
|
|
|
|
void io_sq_thread_unpark(struct io_sq_data *sqd);
|
|
|
|
void io_put_sq_data(struct io_sq_data *sqd);
|
2023-01-15 15:15:19 +08:00
|
|
|
void io_sqpoll_wait_sq(struct io_ring_ctx *ctx);
|
2023-08-14 01:05:36 +08:00
|
|
|
int io_sqpoll_wq_cpu_affinity(struct io_ring_ctx *ctx, cpumask_var_t mask);
|