#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/file.h>
#include <linux/fdtable.h>
#include <linux/fsnotify.h>
#include <linux/namei.h>
#include <linux/io_uring.h>
#include <uapi/linux/io_uring.h>
#include "../fs/internal.h"
#include "io_uring.h"
#include "rsrc.h"
#include "openclose.h"
struct io_open { … };
struct io_close { … };
struct io_fixed_install { … };
static bool io_openat_force_async(struct io_open *open)
{ … }
static int __io_openat_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
{ … }
int io_openat_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
{ … }
int io_openat2_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
{ … }
int io_openat2(struct io_kiocb *req, unsigned int issue_flags)
{ … }
int io_openat(struct io_kiocb *req, unsigned int issue_flags)
{ … }
void io_open_cleanup(struct io_kiocb *req)
{ … }
int __io_close_fixed(struct io_ring_ctx *ctx, unsigned int issue_flags,
unsigned int offset)
{ … }
static inline int io_close_fixed(struct io_kiocb *req, unsigned int issue_flags)
{ … }
int io_close_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
{ … }
int io_close(struct io_kiocb *req, unsigned int issue_flags)
{ … }
int io_install_fixed_fd_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
{ … }
int io_install_fixed_fd(struct io_kiocb *req, unsigned int issue_flags)
{ … }