Files
linux/io_uring/bpf-ops.h
Pavel Begunkov 98f37634b1 io_uring/bpf-ops: implement bpf ops registration
Implement BPF struct ops registration. It's registered off the BPF
path, and can be removed by BPF as well as io_uring. To protect it,
introduce a global lock synchronising registration. ctx->uring_lock can
be nested under it. ctx->bpf_ops is write protected by both locks and
so it's safe to read it under either of them.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://patch.msgid.link/1f46bffd76008de49cbafa2ad77d348810a4f69e.1772109579.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2026-03-16 16:15:00 -06:00

29 lines
503 B
C

// SPDX-License-Identifier: GPL-2.0
#ifndef IOU_BPF_OPS_H
#define IOU_BPF_OPS_H
#include <linux/io_uring_types.h>
enum {
IOU_REGION_MEM,
IOU_REGION_CQ,
IOU_REGION_SQ,
};
struct io_uring_bpf_ops {
int (*loop_step)(struct io_ring_ctx *ctx, struct iou_loop_params *lp);
__u32 ring_fd;
void *priv;
};
#ifdef CONFIG_IO_URING_BPF_OPS
void io_unregister_bpf_ops(struct io_ring_ctx *ctx);
#else
static inline void io_unregister_bpf_ops(struct io_ring_ctx *ctx)
{
}
#endif
#endif /* IOU_BPF_OPS_H */