tokio-rs/io-uring

The low-level io_uring userspace interface for Rust

The low-level MIT license (LICENSE-MIT or

Linux IO Uring

The low-level io_uring userspace interface for Rust.

Usage

To use io-uring crate, first add this to your Cargo.toml:

Next we can start using io-uring crate. The following is quick introduction using Read for file.

Note that opcode Read is only available after kernel 5.6. If you use a kernel lower than 5.6, this example will fail.

Test and Benchmarks

You can run the test and benchmark of the library with the following commands.

License

This project is licensed under either of

  • Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or #404)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in io-uring by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Issues

Collection of the latest Issues

zethra

zethra

Comment Icon1

I'm building a high level abstraction around io_uring. I've been testing it and when I submit entries from multiple threads it seems to occasionally loose entries. From inspecting the SQ they seem to be taken by the kernel with no issue. I'm not overflowing the SQ or CQ. The entry just never shows up in the CQ. I have the SQ in a mutex so multiple threads overwriting the entries. The entries lost are always write, idk if that's significant.

Here's the test I'm running that triggers the issue: https://git.sr.ht/~zethra/smol-uring/tree/uring-refactor/item/src/lib.rs#L89

And here's my code that actually does the submission: https://git.sr.ht/~zethra/smol-uring/tree/uring-refactor/item/src/lib.rs#L89

If you have any idea why this is happening, I'd appreciate input.

zethra

zethra

Comment Icon3

The documentation for the Read opcode says it's equivalent to read(2) but I believe that's incorrect as you have to specify offset = -1 to get the behavior for read(2). The docs should reflect that.

quininer

quininer

help wanted
Comment Icon0

I hope to stabilize more APIs in 0.5. To stabilize a new API, the following conditions must be meet.

  • Available in the latest stable kernel
  • Documentation
  • Test

for new API of 5.10, we must upgrade the cross kernel version to pass ci.

Information - Updated Nov 25, 2021

Stars: 572
Forks: 46
Issues: 10

Repositories & Extras

IDE

3.5K

Rust Language Server (RLS)

The RLS provides a server that runs in the background, providing IDEs,

Rust Language Server (RLS)

Rust lang bookmarking tool

Rust and Rocket used bookmarking tool for search bar

Rust lang bookmarking tool

Rust Language Security

execrices: RUSTSEC-2021-0001

Rust Language Security

False Positive for rust-lang/rust#83583

The deprecation lint proc_macro_derive_resolution_fallback is intended to catch proc macro generated code that refers to items from parent modules that should not be in scope:

False Positive for rust-lang/rust#83583

rust_icu: low-level rust language bindings for the ICU library

See: The latest version of this file is available at

rust_icu: low-level rust language bindings for the ICU library

Rust lang exercises

Personal tips and drills in my journey as a beginner rustacean

Rust lang exercises

😍 Rust Language

👍 Download and execute rustup

😍 Rust Language

TensorFlow Rust provides idiomatic Rust language

bindings for Documentation

TensorFlow Rust provides idiomatic Rust language

Rust Language Learning material

Rust is blazingly fast systems programming language that prevents segfaults and guarantees thread safety

Rust Language Learning material
Facebook Instagram Twitter GitHub Dribbble
Privacy