// SPDX-License-Identifier: GPL-2.0
#ifndef IOU_LOOP_H
#define IOU_LOOP_H

#include <linux/io_uring_types.h>

struct iou_loop_params {
	/*
	 * The CQE index to wait for. Only serves as a hint and can still be
	 * woken up earlier.
	 */
	__u32			cq_wait_idx;
};

enum {
	IOU_LOOP_CONTINUE = 0,
	IOU_LOOP_STOP,
};

static inline bool io_has_loop_ops(struct io_ring_ctx *ctx)
{
	return data_race(ctx->loop_step);
}

int io_run_loop(struct io_ring_ctx *ctx);

static inline struct iou_ctx *io_loop_mangle_ctx(struct io_ring_ctx *ctx)
{
	return (struct iou_ctx *)ctx;
}

static inline struct io_ring_ctx *io_loop_demangle_ctx(struct iou_ctx *ctx)
{
	return (struct io_ring_ctx *)ctx;
}

#endif
