Skip to content

Commit f38fe66

Browse files
jordanisaacssunfishcode
authored andcommitted
Port to Rustix 1.0.
1 parent 31ba148 commit f38fe66

26 files changed

+675
-1613
lines changed

Cargo.lock

Lines changed: 142 additions & 1090 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
[package]
2-
name = "io-uring"
3-
version = "0.7.4"
4-
authors = ["quininer <quininer@live.com>"]
2+
name = "rustix-uring"
3+
version = "0.3.0"
4+
authors = ["Jordan Isaacs <mail@jdisaacs.com>"]
55
edition = "2021"
66
license = "MIT OR Apache-2.0"
7-
repository = "https://github.com/tokio-rs/io-uring"
8-
homepage = "https://github.com/tokio-rs/io-uring"
9-
documentation = "https://docs.rs/io-uring"
7+
repository = "https://github.com/jordanisaacs/rustix-uring"
8+
homepage = "https://github.com/jordanisaacs/rustix-uring"
9+
documentation = "https://docs.rs/rustix-uring"
1010
description = "The low-level `io_uring` userspace interface for Rust"
1111
categories = [ "asynchronous", "network-programming", "filesystem" ]
1212
rust-version = "1.63"
@@ -23,7 +23,7 @@ std = ["rustix/std", "bitflags/std"]
2323

2424
[dependencies]
2525
bitflags = { version = "2.4.0", default-features = false }
26-
rustix = { version = "0.38.32", default-features = false, features = ["io_uring", "mm"] }
26+
rustix = { version = "1.0.2", default-features = false, features = ["io_uring", "mm", "thread"] }
2727

2828
[dev-dependencies]
2929
libc = "0.2.98"

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ To use `io-uring` crate, first add this to your `Cargo.toml`:
2020

2121
```toml
2222
[dependencies]
23-
io-uring = "0.6"
23+
rustix-uring = "0.1"
2424
```
2525

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

2929
```rust
30-
use io_uring::{opcode, types, IoUring};
30+
use rustix_uring::{opcode, types, IoUring};
3131
use std::os::unix::io::AsRawFd;
3232
use std::{fs, io};
3333

@@ -53,7 +53,7 @@ fn main() -> io::Result<()> {
5353

5454
let cqe = ring.completion().next().expect("completion queue is empty");
5555

56-
assert_eq!(cqe.user_data(), 0x42);
56+
assert_eq!(cqe.user_data().u64_(), 0x42);
5757
assert!(cqe.result() >= 0, "read error: {}", cqe.result());
5858

5959
Ok(())

examples/readme.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use io_uring::{opcode, types, IoUring};
1+
use rustix_uring::{opcode, types, IoUring};
22
use std::os::unix::io::AsRawFd;
33
use std::{fs, io};
44

@@ -24,7 +24,7 @@ fn main() -> io::Result<()> {
2424

2525
let cqe = ring.completion().next().expect("completion queue is empty");
2626

27-
assert_eq!(cqe.user_data(), 0x42);
27+
assert_eq!(cqe.user_data().u64_(), 0x42);
2828
assert!(cqe.result() >= 0, "read error: {}", cqe.result());
2929

3030
Ok(())

examples/tcp_echo.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::net::TcpListener;
33
use std::os::unix::io::{AsRawFd, RawFd};
44
use std::{io, ptr};
55

6-
use io_uring::{opcode, squeue, types, Errno, IoUring, SubmissionQueue};
6+
use rustix_uring::{opcode, squeue, types, Errno, IoUring, SubmissionQueue};
77
use slab::Slab;
88

99
#[derive(Clone, Debug)]
@@ -34,7 +34,7 @@ impl AcceptCount {
3434
AcceptCount {
3535
entry: opcode::Accept::new(types::Fd(fd), ptr::null_mut(), ptr::null_mut())
3636
.build()
37-
.user_data(token as _),
37+
.user_data(token as u64),
3838
count,
3939
}
4040
}
@@ -101,7 +101,7 @@ fn main() -> anyhow::Result<()> {
101101

102102
for cqe in &mut cq {
103103
let ret = cqe.result();
104-
let token_index = cqe.user_data() as usize;
104+
let token_index = cqe.user_data().u64_() as usize;
105105

106106
if ret < 0 {
107107
eprintln!(
@@ -124,7 +124,7 @@ fn main() -> anyhow::Result<()> {
124124

125125
let poll_e = opcode::PollAdd::new(types::Fd(fd), libc::POLLIN as _)
126126
.build()
127-
.user_data(poll_token as _);
127+
.user_data(poll_token as u64);
128128

129129
unsafe {
130130
if sq.push(&poll_e).is_err() {
@@ -147,7 +147,7 @@ fn main() -> anyhow::Result<()> {
147147

148148
let read_e = opcode::Recv::new(types::Fd(fd), buf.as_mut_ptr(), buf.len() as _)
149149
.build()
150-
.user_data(token_index as _);
150+
.user_data(token_index as u64);
151151

152152
unsafe {
153153
if sq.push(&read_e).is_err() {
@@ -178,7 +178,7 @@ fn main() -> anyhow::Result<()> {
178178

179179
let write_e = opcode::Send::new(types::Fd(fd), buf.as_ptr(), len as _)
180180
.build()
181-
.user_data(token_index as _);
181+
.user_data(token_index as u64);
182182

183183
unsafe {
184184
if sq.push(&write_e).is_err() {
@@ -202,7 +202,7 @@ fn main() -> anyhow::Result<()> {
202202

203203
opcode::PollAdd::new(types::Fd(fd), libc::POLLIN as _)
204204
.build()
205-
.user_data(token_index as _)
205+
.user_data(token_index as u64)
206206
} else {
207207
let offset = offset + write_len;
208208
let len = len - offset;
@@ -218,7 +218,7 @@ fn main() -> anyhow::Result<()> {
218218

219219
opcode::Write::new(types::Fd(fd), buf.as_ptr(), len as _)
220220
.build()
221-
.user_data(token_index as _)
221+
.user_data(token_index as u64)
222222
};
223223

224224
unsafe {

io-uring-bench/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
[package]
22
name = "io-uring-bench"
33
version = "0.1.0"
4-
authors = ["quininer <quininer@live.com>"]
4+
authors = ["Jordan Isaacs <mail@jdisaacs.com>"]
55
edition = "2021"
66
publish = false
77

88
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
99

1010
[dependencies]
11-
io-uring = { path = ".." }
11+
io-uring = { path = "..", package = "rustix-uring" }
1212
criterion = "0.5"
1313
tempfile = "3"
1414

io-uring-test/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
[package]
22
name = "io-uring-test"
33
version = "0.1.0"
4-
authors = ["quininer <quininer@live.com>"]
4+
authors = ["Jordan Isaacs <mail@jdisaacs.com>"]
55
edition = "2021"
66
publish = false
77

88
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
99

1010
[dependencies]
11-
io-uring = { path = ".." }
11+
io-uring = { path = "..", package = "rustix-uring" }
1212
libc = { version = "0.2", features = [ "extra_traits" ] }
13-
rustix = { version = "0.38.0", features = ["fs"] }
13+
rustix = { version = "1.0.2", features = ["fs"] }
1414
anyhow = "1"
1515
tempfile = "3"
1616
once_cell = "1"

io-uring-test/src/main.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ fn test<S: squeue::EntryMarker, C: cqueue::EntryMarker>(
4949
println!(
5050
"ring type: IoUring<{}, {}>",
5151
std::any::type_name::<S>()
52-
.strip_prefix("io_uring::")
52+
.strip_prefix("rustix_uring::")
5353
.unwrap(),
5454
std::any::type_name::<C>()
55-
.strip_prefix("io_uring::")
55+
.strip_prefix("rustix_uring::")
5656
.unwrap(),
5757
);
5858
println!("params: {:#?}", ring.params());
@@ -133,16 +133,14 @@ fn test<S: squeue::EntryMarker, C: cqueue::EntryMarker>(
133133
tests::net::test_tcp_buffer_select(&mut ring, &test)?;
134134
tests::net::test_tcp_buffer_select_recvmsg(&mut ring, &test)?;
135135
tests::net::test_tcp_buffer_select_readv(&mut ring, &test)?;
136-
// FIXME: This test hangs on upstream.
137-
//tests::net::test_tcp_recv_multi(&mut ring, &test)?;
136+
tests::net::test_tcp_recv_multi(&mut ring, &test)?;
138137
tests::net::test_tcp_recv_bundle(&mut ring, &test)?;
139138
tests::net::test_tcp_recv_multi_bundle(&mut ring, &test)?;
140139

141140
tests::net::test_tcp_shutdown(&mut ring, &test)?;
142141
tests::net::test_socket(&mut ring, &test)?;
143142
tests::net::test_udp_recvmsg_multishot(&mut ring, &test)?;
144-
// FIXME: This test fails on upstream.
145-
//tests::net::test_udp_recvmsg_multishot_trunc(&mut ring, &test)?;
143+
tests::net::test_udp_recvmsg_multishot_trunc(&mut ring, &test)?;
146144
tests::net::test_udp_send_with_dest(&mut ring, &test)?;
147145
tests::net::test_udp_sendzc_with_dest(&mut ring, &test)?;
148146

io-uring-test/src/tests/cancel.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ pub fn test_async_cancel_user_data<S: squeue::EntryMarker, C: cqueue::EntryMarke
3939
ring.submit_and_wait(entries.len())?;
4040

4141
let mut cqes: Vec<cqueue::Entry> = ring.completion().map(Into::into).collect();
42-
cqes.sort_unstable_by_key(cqueue::Entry::user_data);
42+
cqes.sort_unstable_by_key(cqueue::Entry::user_data_u64);
4343

4444
assert_eq!(cqes.len(), entries.len());
4545

46-
assert_eq!(cqes[0].user_data(), 2003);
47-
assert_eq!(cqes[1].user_data(), 2004);
46+
assert_eq!(cqes[0].user_data().u64_(), 2003);
47+
assert_eq!(cqes[1].user_data().u64_(), 2004);
4848

4949
assert_eq!(cqes[0].result(), -libc::ECANCELED); // -ECANCELED
5050
assert_eq!(cqes[1].result(), 0); // the number of requests cancelled
@@ -92,9 +92,9 @@ pub fn test_async_cancel_user_data_all<S: squeue::EntryMarker, C: cqueue::EntryM
9292

9393
assert_eq!(cqes.len(), entries.len());
9494

95-
assert_eq!(cqes[0].user_data(), 2003);
96-
assert_eq!(cqes[1].user_data(), 2003);
97-
assert_eq!(cqes[2].user_data(), 2004);
95+
assert_eq!(cqes[0].user_data().u64_(), 2003);
96+
assert_eq!(cqes[1].user_data().u64_(), 2003);
97+
assert_eq!(cqes[2].user_data().u64_(), 2004);
9898

9999
assert_eq!(cqes[0].result(), -libc::ECANCELED); // -ECANCELED
100100
assert_eq!(cqes[1].result(), -libc::ECANCELED); // -ECANCELED
@@ -143,9 +143,9 @@ pub fn test_async_cancel_any<S: squeue::EntryMarker, C: cqueue::EntryMarker>(
143143

144144
assert_eq!(cqes.len(), entries.len());
145145

146-
assert_eq!(cqes[0].user_data(), 2003);
147-
assert_eq!(cqes[1].user_data(), 2004);
148-
assert_eq!(cqes[2].user_data(), 2005);
146+
assert_eq!(cqes[0].user_data().u64_(), 2003);
147+
assert_eq!(cqes[1].user_data().u64_(), 2004);
148+
assert_eq!(cqes[2].user_data().u64_(), 2005);
149149

150150
assert_eq!(cqes[0].result(), -libc::ECANCELED); // -ECANCELED
151151
assert_eq!(cqes[1].result(), -libc::ECANCELED);
@@ -193,8 +193,8 @@ pub fn test_async_cancel_fd<S: squeue::EntryMarker, C: cqueue::EntryMarker>(
193193

194194
assert_eq!(cqes.len(), entries.len());
195195

196-
assert_eq!(cqes[0].user_data(), 2003);
197-
assert_eq!(cqes[1].user_data(), 2004);
196+
assert_eq!(cqes[0].user_data().u64_(), 2003);
197+
assert_eq!(cqes[1].user_data().u64_(), 2004);
198198

199199
assert_eq!(cqes[0].result(), -libc::ECANCELED); // -ECANCELED
200200
assert_eq!(cqes[1].result(), 0);
@@ -243,9 +243,9 @@ pub fn test_async_cancel_fd_all<S: squeue::EntryMarker, C: cqueue::EntryMarker>(
243243

244244
assert_eq!(cqes.len(), entries.len());
245245

246-
assert_eq!(cqes[0].user_data(), 2003);
247-
assert_eq!(cqes[1].user_data(), 2004);
248-
assert_eq!(cqes[2].user_data(), 2005);
246+
assert_eq!(cqes[0].user_data().u64_(), 2003);
247+
assert_eq!(cqes[1].user_data().u64_(), 2004);
248+
assert_eq!(cqes[2].user_data().u64_(), 2005);
249249

250250
assert_eq!(cqes[0].result(), -libc::ECANCELED); // -ECANCELED
251251
assert_eq!(cqes[1].result(), -libc::ECANCELED);

0 commit comments

Comments
 (0)