#include <liburing.h> struct io_uring ring; // 初始化 io_uring,队列深度 1024 个条目 int ret = io_uring_queue_init(1024, &ring, 0); // ... 使用 ring 进行 I/O 操作 ... // 销毁队列 io_uring_queue_exit(&ring);
3.2 基本读写操作流程
struct io_uring_sqe *sqe;
struct io_uring_cqe *cqe;
// 1. 从 SQ 获取一个空闲的 SQE
sqe = io_uring_get_sqe(˚);
// 2. 准备一个 pread 操作(从 fd 的第 4096 字节读取 4096 字节到 buf)
char buf[4096] __attribute__((aligned(4096)));
io_uring_prep_read(sqe, fd, buf, sizeof(buf), 4096);
sqe->user_data = (uint64_t)buf; // 用户自定义标识符
// 3. 提交所有已准备好的 SQE 到内核
io_uring_submit(˚);
// 4. 等待至少一个完成事件
ret = io_uring_wait_cqe(˚, &cqe);

发表评论 取消回复