7 个不稳定版本
0.3.3 | 2020年9月26日 |
---|---|
0.3.2 | 2020年9月25日 |
0.2.0 | 2019年12月10日 |
0.1.0 | 2019年11月8日 |
0.0.0-ringbahn.1 | 2020年5月27日 |
#1081 in 异步
9,784 每月下载量
用于 3 crates
80KB
1.5K SLoC
Linux 的 io_uring 接口
iou
是一个围绕 liburing 库的包装器,它提供了对 Linux 新的 io_uring 接口的高级接口。它旨在为任何 io_uring 的使用案例提供可扩展性和灵活性,同时仍在用户的利益方面解决许多基本的安全问题。
iou 的主要 API 是 IoUring
类型及其组件,包括 SubmissionQueue
、CompletionQueue
和 Registrar
。这提供了一个类似 Rust 的高层 API,用于管理 io_uring。
安全性
iou 中的大多数 API 都是安全的,并且在使用 io_uring 时解决了许多安全问题。特别是,iou 所基于的 liburing 库正确实现了与内核通过 io_uring 接口进行协调所需的原子操作。然而,一些关键接口仍然是不安全的。特别是,为 io_uring 准备要提交的 IO 事件是不安全的:用户必须确保在 IO 的生命周期内缓冲区和文件描述符被视为借用。
内核支持
为了使用 io_uring,你运行代码的机器必须有一个支持该接口的内核。io_uring 的第一个版本是在 Linux 5.1 中添加的,但它不包括此库所支持的所有功能。此库的一些功能可能取决于你使用的 Linux 版本,可能无法正常工作。
依赖项
~2MB
~49K SLoC