#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/file.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/nospec.h>
#include <linux/io_uring.h>
#include <uapi/linux/io_uring.h>
#include "io_uring.h"
#include "tctx.h"
static struct io_wq *io_init_wq_offload(struct io_ring_ctx *ctx,
struct task_struct *task)
{ … }
void __io_uring_free(struct task_struct *tsk)
{ … }
__cold int io_uring_alloc_task_context(struct task_struct *task,
struct io_ring_ctx *ctx)
{ … }
int __io_uring_add_tctx_node(struct io_ring_ctx *ctx)
{ … }
int __io_uring_add_tctx_node_from_submit(struct io_ring_ctx *ctx)
{ … }
__cold void io_uring_del_tctx_node(unsigned long index)
{ … }
__cold void io_uring_clean_tctx(struct io_uring_task *tctx)
{ … }
void io_uring_unreg_ringfd(void)
{ … }
int io_ring_add_registered_file(struct io_uring_task *tctx, struct file *file,
int start, int end)
{ … }
static int io_ring_add_registered_fd(struct io_uring_task *tctx, int fd,
int start, int end)
{ … }
int io_ringfd_register(struct io_ring_ctx *ctx, void __user *__arg,
unsigned nr_args)
{ … }
int io_ringfd_unregister(struct io_ring_ctx *ctx, void __user *__arg,
unsigned nr_args)
{ … }