代码拉取完成,页面将自动刷新
同步操作将从 OpenHarmony-SIG/third_party_liburing 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
由于直接使用系统调用较为复杂,Jens Axboe 还提供了封装好的用户态库liburing,简化了io_uring的使用。 o_uring库,libouling提供了设置和拆除io_ouling实例的帮助程序,以及为不需要(或不希望)处理完整内核端实现的应用程序提供简化的接口
debian/
example/ #样例代码
man/
src/liburing #库源代码
test/ #测试脚本代码
liburing提供了以下基本助手来完成相同任务: struct io_uring ring; io_uring_queue_init(ENTRIES, &ring, 0); 一旦应用程序使用io_uring实例完成,它只需调用:io_uring_queue_exit(&ring)。相关接口在src/include/liburing.h定义
extern int io_uring_queue_init_params(unsigned entries, struct io_uring ring,struct io_uring_params p);
extern int io_uring_queue_init(unsigned entries, struct io_uring ring, unsigned flags);
entries 表示队列大小
ring 就是需要初始化的io_uring结构指针
flags是标志参数,此值会改变io_uring_params p->flags
io_uring_params *p更多的设置
extern struct io_uring_sqe io_uring_get_sqe(struct io_uring ring);
static inline void io_uring_prep_readv(struct io_uring_sqe sqe,int fd, const struct iovec iovecs, unsigned nr_vecs,off_t offset);
static inline void io_uring_prep_writev(struct io_uring_sqe sqe,int fd, const struct iovec iovecs, unsigned nr_vecs,off_t offset);
sqe即前面获取的sqe结构指针
fd为需要读写的文件描述符,可以是磁盘文件也可以是socket
iovecs为iovec数组,具体使用请参照readv和writev
nr_vecs 为iovecs数组元素个数
offset 为文件操作的偏移量
static inline void io_uring_sqe_set_data(struct io_uring_sqe *sqe, void *data);
extern int io_uring_submit(struct io_uring *ring);
extern int io_uring_submit_and_wait(struct io_uring *ring, unsigned wait_nr);
wait_nr 等待事件数量
static inline int io_uring_peek_cqe(struct io_uring *ring, struct io_uring_cqe **cqe_ptr);
static inline int io_uring_wait_cqe(struct io_uring *ring, struct io_uring_cqe **cqe_ptr);
cqe_ptr 输出参数,是cqe指针变量的额地址
注意:io_uring_peek_cqe如果没有已完成的IO操作时,也会立即返回,cqe_ptr被置空;而io_uring_wait_cqe会阻塞线程,等待IO操作完成。
static inline void *io_uring_cqe_get_data(const struct io_uring_cqe *cqe);
static inline void io_uring_cqe_seen(struct io_uring *ring, struct io_uring_cqe *cqe);
extern void io_uring_queue_exit(struct io_uring *ring);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。