diff options
| author | Steven Fackler <sfackler@gmail.com> | 2019-04-27 08:34:08 -0700 |
|---|---|---|
| committer | Steven Fackler <sfackler@gmail.com> | 2019-04-27 08:34:08 -0700 |
| commit | bd177f3ea31e47b94dd400239a9badfe2bd47355 (patch) | |
| tree | d6bc8669ce10dbb427760147938821f464fd606a /src/libstd/sys/wasi | |
| parent | d4a32d504a5aa49b951bfc70602a9615cb772acf (diff) | |
Stabilized vectored IO
This renames `std::io::IoVec` to `std::io::IoSlice` and `std::io::IoVecMut` to `std::io::IoSliceMut`, and stabilizes `std::io::IoSlice`, `std::io::IoSliceMut`, `std::io::Read::read_vectored`, and `std::io::Write::write_vectored`. Closes #58452
Diffstat (limited to 'src/libstd/sys/wasi')
| -rw-r--r-- | src/libstd/sys/wasi/ext/fs.rs | 10 | ||||
| -rw-r--r-- | src/libstd/sys/wasi/fd.rs | 26 | ||||
| -rw-r--r-- | src/libstd/sys/wasi/fs.rs | 10 | ||||
| -rw-r--r-- | src/libstd/sys/wasi/io.rs | 16 | ||||
| -rw-r--r-- | src/libstd/sys/wasi/net.rs | 6 | ||||
| -rw-r--r-- | src/libstd/sys/wasi/pipe.rs | 6 | ||||
| -rw-r--r-- | src/libstd/sys/wasi/stdio.rs | 14 |
7 files changed, 44 insertions, 44 deletions
diff --git a/src/libstd/sys/wasi/ext/fs.rs b/src/libstd/sys/wasi/ext/fs.rs index 53f415c7821..0ec4122f385 100644 --- a/src/libstd/sys/wasi/ext/fs.rs +++ b/src/libstd/sys/wasi/ext/fs.rs @@ -3,7 +3,7 @@ #![unstable(feature = "wasi_ext", issue = "0")] use crate::fs::{self, File, Metadata, OpenOptions}; -use crate::io::{self, IoVec, IoVecMut}; +use crate::io::{self, IoSlice, IoSliceMut}; use crate::os::wasi::ffi::OsStrExt; use crate::path::{Path, PathBuf}; use crate::sys_common::{AsInner, AsInnerMut, FromInner}; @@ -25,7 +25,7 @@ pub trait FileExt { /// return with a short read. /// /// [`File::read`]: ../../../../std/fs/struct.File.html#method.read_vectored - fn read_at(&self, bufs: &mut [IoVecMut<'_>], offset: u64) -> io::Result<usize>; + fn read_at(&self, bufs: &mut [IoSliceMut<'_>], offset: u64) -> io::Result<usize>; /// Writes a number of bytes starting from a given offset. /// @@ -43,7 +43,7 @@ pub trait FileExt { /// short write. /// /// [`File::write`]: ../../../../std/fs/struct.File.html#method.write_vectored - fn write_at(&self, bufs: &[IoVec<'_>], offset: u64) -> io::Result<usize>; + fn write_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> io::Result<usize>; /// Returns the current position within the file. /// @@ -105,11 +105,11 @@ pub trait FileExt { // FIXME: bind __wasi_random_get maybe? - on crates.io for unix impl FileExt for fs::File { - fn read_at(&self, bufs: &mut [IoVecMut<'_>], offset: u64) -> io::Result<usize> { + fn read_at(&self, bufs: &mut [IoSliceMut<'_>], offset: u64) -> io::Result<usize> { self.as_inner().fd().pread(bufs, offset) } - fn write_at(&self, bufs: &[IoVec<'_>], offset: u64) -> io::Result<usize> { + fn write_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> io::Result<usize> { self.as_inner().fd().pwrite(bufs, offset) } diff --git a/src/libstd/sys/wasi/fd.rs b/src/libstd/sys/wasi/fd.rs index 0b68b6f4d9c..25692ec0868 100644 --- a/src/libstd/sys/wasi/fd.rs +++ b/src/libstd/sys/wasi/fd.rs @@ -1,6 +1,6 @@ #![allow(dead_code)] -use crate::io::{self, IoVec, IoVecMut, SeekFrom}; +use crate::io::{self, IoSlice, IoSliceMut, SeekFrom}; use crate::mem; use crate::net::Shutdown; use crate::sys::cvt_wasi; @@ -24,25 +24,25 @@ pub type RiFlags = u16; pub type RoFlags = u16; pub type SiFlags = u16; -fn iovec(a: &mut [IoVecMut<'_>]) -> (*const libc::__wasi_iovec_t, usize) { +fn iovec(a: &mut [IoSliceMut<'_>]) -> (*const libc::__wasi_iovec_t, usize) { assert_eq!( - mem::size_of::<IoVecMut<'_>>(), + mem::size_of::<IoSliceMut<'_>>(), mem::size_of::<libc::__wasi_iovec_t>() ); assert_eq!( - mem::align_of::<IoVecMut<'_>>(), + mem::align_of::<IoSliceMut<'_>>(), mem::align_of::<libc::__wasi_iovec_t>() ); (a.as_ptr() as *const libc::__wasi_iovec_t, a.len()) } -fn ciovec(a: &[IoVec<'_>]) -> (*const libc::__wasi_ciovec_t, usize) { +fn ciovec(a: &[IoSlice<'_>]) -> (*const libc::__wasi_ciovec_t, usize) { assert_eq!( - mem::size_of::<IoVec<'_>>(), + mem::size_of::<IoSlice<'_>>(), mem::size_of::<libc::__wasi_ciovec_t>() ); assert_eq!( - mem::align_of::<IoVec<'_>>(), + mem::align_of::<IoSlice<'_>>(), mem::align_of::<libc::__wasi_ciovec_t>() ); (a.as_ptr() as *const libc::__wasi_ciovec_t, a.len()) @@ -67,28 +67,28 @@ impl WasiFd { cvt_wasi(unsafe { libc::__wasi_fd_datasync(self.fd) }) } - pub fn pread(&self, bufs: &mut [IoVecMut<'_>], offset: u64) -> io::Result<usize> { + pub fn pread(&self, bufs: &mut [IoSliceMut<'_>], offset: u64) -> io::Result<usize> { let mut read = 0; let (ptr, len) = iovec(bufs); cvt_wasi(unsafe { libc::__wasi_fd_pread(self.fd, ptr, len, offset, &mut read) })?; Ok(read) } - pub fn pwrite(&self, bufs: &[IoVec<'_>], offset: u64) -> io::Result<usize> { + pub fn pwrite(&self, bufs: &[IoSlice<'_>], offset: u64) -> io::Result<usize> { let mut read = 0; let (ptr, len) = ciovec(bufs); cvt_wasi(unsafe { libc::__wasi_fd_pwrite(self.fd, ptr, len, offset, &mut read) })?; Ok(read) } - pub fn read(&self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { + pub fn read(&self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> { let mut read = 0; let (ptr, len) = iovec(bufs); cvt_wasi(unsafe { libc::__wasi_fd_read(self.fd, ptr, len, &mut read) })?; Ok(read) } - pub fn write(&self, bufs: &[IoVec<'_>]) -> io::Result<usize> { + pub fn write(&self, bufs: &[IoSlice<'_>]) -> io::Result<usize> { let mut read = 0; let (ptr, len) = ciovec(bufs); cvt_wasi(unsafe { libc::__wasi_fd_write(self.fd, ptr, len, &mut read) })?; @@ -309,7 +309,7 @@ impl WasiFd { pub fn sock_recv( &self, - ri_data: &mut [IoVecMut<'_>], + ri_data: &mut [IoSliceMut<'_>], ri_flags: RiFlags, ) -> io::Result<(usize, RoFlags)> { let mut ro_datalen = 0; @@ -321,7 +321,7 @@ impl WasiFd { Ok((ro_datalen, ro_flags)) } - pub fn sock_send(&self, si_data: &[IoVec<'_>], si_flags: SiFlags) -> io::Result<usize> { + pub fn sock_send(&self, si_data: &[IoSlice<'_>], si_flags: SiFlags) -> io::Result<usize> { let mut so_datalen = 0; let (ptr, len) = ciovec(si_data); cvt_wasi(unsafe { libc::__wasi_sock_send(self.fd, ptr, len, si_flags, &mut so_datalen) })?; diff --git a/src/libstd/sys/wasi/fs.rs b/src/libstd/sys/wasi/fs.rs index 589593299d6..172c60385b3 100644 --- a/src/libstd/sys/wasi/fs.rs +++ b/src/libstd/sys/wasi/fs.rs @@ -1,6 +1,6 @@ use crate::ffi::{CStr, CString, OsStr, OsString}; use crate::fmt; -use crate::io::{self, IoVec, IoVecMut, SeekFrom}; +use crate::io::{self, IoSlice, IoSliceMut, SeekFrom}; use crate::iter; use crate::mem::{self, ManuallyDrop}; use crate::os::wasi::ffi::{OsStrExt, OsStringExt}; @@ -414,18 +414,18 @@ impl File { } pub fn read(&self, buf: &mut [u8]) -> io::Result<usize> { - self.read_vectored(&mut [IoVecMut::new(buf)]) + self.read_vectored(&mut [IoSliceMut::new(buf)]) } - pub fn read_vectored(&self, bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { + pub fn read_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> { self.fd.read(bufs) } pub fn write(&self, buf: &[u8]) -> io::Result<usize> { - self.write_vectored(&[IoVec::new(buf)]) + self.write_vectored(&[IoSlice::new(buf)]) } - pub fn write_vectored(&self, bufs: &[IoVec<'_>]) -> io::Result<usize> { + pub fn write_vectored(&self, bufs: &[IoSlice<'_>]) -> io::Result<usize> { self.fd.write(bufs) } diff --git a/src/libstd/sys/wasi/io.rs b/src/libstd/sys/wasi/io.rs index 5f0315d279e..cc8f1e16fa0 100644 --- a/src/libstd/sys/wasi/io.rs +++ b/src/libstd/sys/wasi/io.rs @@ -4,15 +4,15 @@ use crate::slice; use libc::{__wasi_ciovec_t, __wasi_iovec_t, c_void}; #[repr(transparent)] -pub struct IoVec<'a> { +pub struct IoSlice<'a> { vec: __wasi_ciovec_t, _p: PhantomData<&'a [u8]>, } -impl<'a> IoVec<'a> { +impl<'a> IoSlice<'a> { #[inline] - pub fn new(buf: &'a [u8]) -> IoVec<'a> { - IoVec { + pub fn new(buf: &'a [u8]) -> IoSlice<'a> { + IoSlice { vec: __wasi_ciovec_t { buf: buf.as_ptr() as *const c_void, buf_len: buf.len(), @@ -29,15 +29,15 @@ impl<'a> IoVec<'a> { } } -pub struct IoVecMut<'a> { +pub struct IoSliceMut<'a> { vec: __wasi_iovec_t, _p: PhantomData<&'a mut [u8]>, } -impl<'a> IoVecMut<'a> { +impl<'a> IoSliceMut<'a> { #[inline] - pub fn new(buf: &'a mut [u8]) -> IoVecMut<'a> { - IoVecMut { + pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> { + IoSliceMut { vec: __wasi_iovec_t { buf: buf.as_mut_ptr() as *mut c_void, buf_len: buf.len() diff --git a/src/libstd/sys/wasi/net.rs b/src/libstd/sys/wasi/net.rs index 5486cdec4c0..80f633a8e1f 100644 --- a/src/libstd/sys/wasi/net.rs +++ b/src/libstd/sys/wasi/net.rs @@ -1,5 +1,5 @@ use crate::fmt; -use crate::io::{self, IoVec, IoVecMut}; +use crate::io::{self, IoSlice, IoSliceMut}; use crate::net::{SocketAddr, Shutdown, Ipv4Addr, Ipv6Addr}; use crate::time::Duration; use crate::sys::{unsupported, Void}; @@ -44,7 +44,7 @@ impl TcpStream { unsupported() } - pub fn read_vectored(&self, _: &mut [IoVecMut<'_>]) -> io::Result<usize> { + pub fn read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize> { unsupported() } @@ -52,7 +52,7 @@ impl TcpStream { unsupported() } - pub fn write_vectored(&self, _: &[IoVec<'_>]) -> io::Result<usize> { + pub fn write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize> { unsupported() } diff --git a/src/libstd/sys/wasi/pipe.rs b/src/libstd/sys/wasi/pipe.rs index aa6bf8076f6..9f07f054362 100644 --- a/src/libstd/sys/wasi/pipe.rs +++ b/src/libstd/sys/wasi/pipe.rs @@ -1,4 +1,4 @@ -use crate::io::{self, IoVec, IoVecMut}; +use crate::io::{self, IoSlice, IoSliceMut}; use crate::sys::Void; pub struct AnonPipe(Void); @@ -8,7 +8,7 @@ impl AnonPipe { match self.0 {} } - pub fn read_vectored(&self, _bufs: &mut [IoVecMut<'_>]) -> io::Result<usize> { + pub fn read_vectored(&self, _bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> { match self.0 {} } @@ -16,7 +16,7 @@ impl AnonPipe { match self.0 {} } - pub fn write_vectored(&self, _bufs: &[IoVec<'_>]) -> io::Result<usize> { + pub fn write_vectored(&self, _bufs: &[IoSlice<'_>]) -> io::Result<usize> { match self.0 {} } diff --git a/src/libstd/sys/wasi/stdio.rs b/src/libstd/sys/wasi/stdio.rs index bdad4084891..2bf8d803c01 100644 --- a/src/libstd/sys/wasi/stdio.rs +++ b/src/libstd/sys/wasi/stdio.rs @@ -1,4 +1,4 @@ -use crate::io::{self, IoVec, IoVecMut}; +use crate::io::{self, IoSlice, IoSliceMut}; use crate::libc; use crate::mem::ManuallyDrop; use crate::sys::fd::WasiFd; @@ -13,10 +13,10 @@ impl Stdin { } pub fn read(&self, data: &mut [u8]) -> io::Result<usize> { - self.read_vectored(&mut [IoVecMut::new(data)]) + self.read_vectored(&mut [IoSliceMut::new(data)]) } - pub fn read_vectored(&self, data: &mut [IoVecMut<'_>]) -> io::Result<usize> { + pub fn read_vectored(&self, data: &mut [IoSliceMut<'_>]) -> io::Result<usize> { ManuallyDrop::new(unsafe { WasiFd::from_raw(libc::STDIN_FILENO as u32) }) .read(data) } @@ -28,10 +28,10 @@ impl Stdout { } pub fn write(&self, data: &[u8]) -> io::Result<usize> { - self.write_vectored(&[IoVec::new(data)]) + self.write_vectored(&[IoSlice::new(data)]) } - pub fn write_vectored(&self, data: &[IoVec<'_>]) -> io::Result<usize> { + pub fn write_vectored(&self, data: &[IoSlice<'_>]) -> io::Result<usize> { ManuallyDrop::new(unsafe { WasiFd::from_raw(libc::STDOUT_FILENO as u32) }) .write(data) } @@ -47,10 +47,10 @@ impl Stderr { } pub fn write(&self, data: &[u8]) -> io::Result<usize> { - self.write_vectored(&[IoVec::new(data)]) + self.write_vectored(&[IoSlice::new(data)]) } - pub fn write_vectored(&self, data: &[IoVec<'_>]) -> io::Result<usize> { + pub fn write_vectored(&self, data: &[IoSlice<'_>]) -> io::Result<usize> { ManuallyDrop::new(unsafe { WasiFd::from_raw(libc::STDERR_FILENO as u32) }) .write(data) } |
