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