162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_cistruct io_sq_data {
462306a36Sopenharmony_ci	refcount_t		refs;
562306a36Sopenharmony_ci	atomic_t		park_pending;
662306a36Sopenharmony_ci	struct mutex		lock;
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci	/* ctx's that are using this sqd */
962306a36Sopenharmony_ci	struct list_head	ctx_list;
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci	struct task_struct	*thread;
1262306a36Sopenharmony_ci	struct wait_queue_head	wait;
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci	unsigned		sq_thread_idle;
1562306a36Sopenharmony_ci	int			sq_cpu;
1662306a36Sopenharmony_ci	pid_t			task_pid;
1762306a36Sopenharmony_ci	pid_t			task_tgid;
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	unsigned long		state;
2062306a36Sopenharmony_ci	struct completion	exited;
2162306a36Sopenharmony_ci};
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciint io_sq_offload_create(struct io_ring_ctx *ctx, struct io_uring_params *p);
2462306a36Sopenharmony_civoid io_sq_thread_finish(struct io_ring_ctx *ctx);
2562306a36Sopenharmony_civoid io_sq_thread_stop(struct io_sq_data *sqd);
2662306a36Sopenharmony_civoid io_sq_thread_park(struct io_sq_data *sqd);
2762306a36Sopenharmony_civoid io_sq_thread_unpark(struct io_sq_data *sqd);
2862306a36Sopenharmony_civoid io_put_sq_data(struct io_sq_data *sqd);
2962306a36Sopenharmony_civoid io_sqpoll_wait_sq(struct io_ring_ctx *ctx);
3062306a36Sopenharmony_ciint io_sqpoll_wq_cpu_affinity(struct io_ring_ctx *ctx, cpumask_var_t mask);
31