Loading

io_uring接口(函数)使用简介

内核接口,自带系统调用函数封装:

#include <linux/io_uring.h>

int io_uring_setup(u32 entries, struct io_uring_params *p);

int io_uring_register(unsigned int fd, unsigned int opcode, 
                      void *arg, unsigned int nr_args);

int io_uring_enter(unsigned int fd, unsigned int to_submit,
                   unsigned int min_complete, unsigned int flags,
                   sigset_t *sig);

用户接口,没有函数接口,需要自己封装系统调用:

#include <linux/io_uring.h>

int io_uring_setup(unsigned entries, struct io_uring_params *p)
{
    return (int)syscall(__NR_io_uring_setup, entries, p);
}

int io_uring_enter(int ring_fd, unsigned int to_submit,
                   unsigned int min_complete, unsigned int flags)
{
    return (int)syscall(__NR_io_uring_enter, ring_fd, to_submit, min_complete,
                        flags, NULL, 0);
}
int io_uring_enter(unsigned int fd, unsigned int to_submit,
                   unsigned int min_complete, unsigned int flags,
                   sigset_t *sig)
{
	return (int)syscall(__NR_io_uring_register, fd, to_submit, min_complete,
                        flags, sig, NULL, 0);
}

liburing库,通过它自己实现的syscall再封装系统调用:

int io_uring_queue_init_params(unsigned entries, struct io_uring *ring,
				struct io_uring_params *p);
int io_uring_queue_init(unsigned entries, struct io_uring *ring,
			unsigned flags);
/* more interface had be provided */
void io_uring_queue_exit(struct io_uring *ring);
posted @ 2022-05-30 21:34  modao  阅读(150)  评论(0编辑  收藏  举报