-
Notifications
You must be signed in to change notification settings - Fork 142
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make Submitter::register_buffers
to accept IoSlice{Mut}
#259
Comments
Welcome PR. |
I'm willing to make this PR and do some testing. But which of |
All that needs to change is this if we only accept pub unsafe fn register_buffers(&self, bufs: &[libc::iovec]) -> io::Result<()> {
// into
pub unsafe fn register_buffers(&self, bufs: &[IoSliceMut<'_>]) -> io::Result<()> { Simply doing that and converting the |
opcode::Readv and opcode::Writev also depend on libc::iovec. I guess an alternative could be to just export libc::iovec. |
This shaves off `nix` as a dependency in core, which was only being used in the io_uring backend for the `fcntl` advisory record locking. Since a previous PR made `rustix` a dep not only for Mac but for any Unix, and `rustix` also has `fcntl`, `nix` becomes redundant. Furthermore, it reduces `libc` usage across core. The only remaining uses are: ```rust io_uring::opcode::Readv::new(fd, iovec as *const iovec as *const libc::iovec, 1) io_uring::opcode::Writev::new(fd, iovec as *const iovec as *const libc::iovec, 1) ``` These two are a little ugly, but sadly the `io_uring` crate requires both opcodes to take a `libc::iovec` while it doesn't export the type. See tokio-rs/io-uring#259 for a request to use `std::io::IoSlice` or to export the type directly. Apart from those two, there are no other usages of libc, so if those are resolved, we could also drop the dependency on libc. Closes #668
IoSlice
andIoSliceMut
are in the standard library. See: nix-rust/nix#1643 for some background.io-uring's
Submitter::register_buffers
uses alibc::iovec
.I propose to adopt the standard library type in order to increase API compatibility.
The text was updated successfully, but these errors were encountered: