From cfd400853070667073818f5fa3f89c62bf21391a Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Thu, 10 Jun 2021 16:00:59 +0200 Subject: [PATCH] feat: `wasi-types` does not define `WasmPtr`. --- Cargo.lock | 2 +- lib/wasi-types/Cargo.toml | 2 +- lib/wasi-types/src/directory.rs | 2 +- lib/wasi-types/src/event.rs | 1 + lib/wasi-types/src/file.rs | 2 +- lib/wasi-types/src/io.rs | 7 +++---- lib/wasi-types/src/lib.rs | 2 -- lib/wasi-types/src/subscription.rs | 1 + lib/wasi-types/src/versions/snapshot0.rs | 2 +- lib/wasi/src/lib.rs | 4 +--- lib/{wasi-types => wasi}/src/ptr.rs | 2 +- lib/wasi/src/syscalls/mod.rs | 4 ++-- 12 files changed, 14 insertions(+), 17 deletions(-) rename lib/{wasi-types => wasi}/src/ptr.rs (97%) diff --git a/Cargo.lock b/Cargo.lock index d61f55c6ebc..8c0c1def3f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2760,7 +2760,7 @@ dependencies = [ "byteorder", "serde", "time", - "wasmer", + "wasmer-types", ] [[package]] diff --git a/lib/wasi-types/Cargo.toml b/lib/wasi-types/Cargo.toml index 67974c60c18..3e1fe2773b2 100644 --- a/lib/wasi-types/Cargo.toml +++ b/lib/wasi-types/Cargo.toml @@ -11,7 +11,7 @@ readme = "README.md" edition = "2018" [dependencies] -wasmer = { path = "../api", version = "2.0.0-rc2" } +wasmer-types = { path = "../types", version = "2.0.0-rc2" } serde = { version = "1.0", features = ["derive"] } byteorder = "1.3" time = "0.1" \ No newline at end of file diff --git a/lib/wasi-types/src/directory.rs b/lib/wasi-types/src/directory.rs index 95aa2c043a9..9275951a20c 100644 --- a/lib/wasi-types/src/directory.rs +++ b/lib/wasi-types/src/directory.rs @@ -1,6 +1,6 @@ use crate::*; use std::mem; -use wasmer::ValueType; +use wasmer_types::ValueType; pub type __wasi_dircookie_t = u64; pub const __WASI_DIRCOOKIE_START: u64 = 0; diff --git a/lib/wasi-types/src/event.rs b/lib/wasi-types/src/event.rs index ad70ce0f0b6..0679f926929 100644 --- a/lib/wasi-types/src/event.rs +++ b/lib/wasi-types/src/event.rs @@ -1,5 +1,6 @@ use crate::*; use std::fmt; +use wasmer_types::ValueType; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] diff --git a/lib/wasi-types/src/file.rs b/lib/wasi-types/src/file.rs index 0a409ba546b..e79ed46029a 100644 --- a/lib/wasi-types/src/file.rs +++ b/lib/wasi-types/src/file.rs @@ -1,7 +1,7 @@ use crate::*; use serde::{Deserialize, Serialize}; use std::fmt; -use wasmer::ValueType; +use wasmer_types::ValueType; pub type __wasi_device_t = u64; diff --git a/lib/wasi-types/src/io.rs b/lib/wasi-types/src/io.rs index 76d229f9d12..e42ff0e1c38 100644 --- a/lib/wasi-types/src/io.rs +++ b/lib/wasi-types/src/io.rs @@ -1,10 +1,9 @@ -use crate::*; -use wasmer::ValueType; +use wasmer_types::ValueType; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] pub struct __wasi_ciovec_t { - pub buf: WasmPtr, + pub buf: u32, pub buf_len: u32, } @@ -13,7 +12,7 @@ unsafe impl ValueType for __wasi_ciovec_t {} #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(C)] pub struct __wasi_iovec_t { - pub buf: WasmPtr, + pub buf: u32, pub buf_len: u32, } diff --git a/lib/wasi-types/src/lib.rs b/lib/wasi-types/src/lib.rs index e19e1a2a432..f55de60f921 100644 --- a/lib/wasi-types/src/lib.rs +++ b/lib/wasi-types/src/lib.rs @@ -14,7 +14,6 @@ mod error; mod event; mod file; mod io; -mod ptr; mod signal; mod subscription; mod time; @@ -27,7 +26,6 @@ pub use error::*; pub use event::*; pub use file::*; pub use io::*; -pub use ptr::*; pub use signal::*; pub use subscription::*; pub use versions::*; diff --git a/lib/wasi-types/src/subscription.rs b/lib/wasi-types/src/subscription.rs index c8265bcc13a..bd7d3c2c85e 100644 --- a/lib/wasi-types/src/subscription.rs +++ b/lib/wasi-types/src/subscription.rs @@ -1,6 +1,7 @@ use crate::*; use std::convert::TryFrom; use std::fmt; +use wasmer_types::ValueType; pub type __wasi_subclockflags_t = u16; pub const __WASI_SUBSCRIPTION_CLOCK_ABSTIME: u16 = 1 << 0; diff --git a/lib/wasi-types/src/versions/snapshot0.rs b/lib/wasi-types/src/versions/snapshot0.rs index 8dd747d6058..b5d6af3ee64 100644 --- a/lib/wasi-types/src/versions/snapshot0.rs +++ b/lib/wasi-types/src/versions/snapshot0.rs @@ -1,7 +1,7 @@ use crate::*; use serde::{Deserialize, Serialize}; use std::fmt; -use wasmer::ValueType; +use wasmer_types::ValueType; pub type __wasi_linkcount_t = u32; diff --git a/lib/wasi/src/lib.rs b/lib/wasi/src/lib.rs index 9c595ecdbe7..181f485b982 100644 --- a/lib/wasi/src/lib.rs +++ b/lib/wasi/src/lib.rs @@ -14,9 +14,7 @@ #[macro_use] mod macros; -mod ptr { - pub use wasmer_wasi_types::{Array, WasmPtr}; -} +mod ptr; mod state; mod syscalls; mod utils; diff --git a/lib/wasi-types/src/ptr.rs b/lib/wasi/src/ptr.rs similarity index 97% rename from lib/wasi-types/src/ptr.rs rename to lib/wasi/src/ptr.rs index 87ad3b76a59..4d5ca86a8e0 100644 --- a/lib/wasi-types/src/ptr.rs +++ b/lib/wasi/src/ptr.rs @@ -1,7 +1,7 @@ //! This is a wrapper around the `WasmPtr` abstraction that returns __WASI_EFAULT //! if memory access failed -use crate::{__wasi_errno_t, __WASI_EFAULT}; +use crate::syscalls::types::{__wasi_errno_t, __WASI_EFAULT}; use std::{cell::Cell, fmt}; pub use wasmer::{Array, FromToNativeWasmType, Item, Memory, ValueType, WasmPtr as BaseWasmPtr}; diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index a8855221a68..58413a6933c 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -52,7 +52,7 @@ fn write_bytes_inner( let mut bytes_written = 0; for iov in iovs_arr_cell { let iov_inner = iov.get(); - let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; + let bytes = WasmPtr::::new(iov_inner.buf).deref(memory, 0, iov_inner.buf_len)?; write_loc .write_all(&bytes.iter().map(|b_cell| b_cell.get()).collect::>()) .map_err(|_| __WASI_EIO)?; @@ -82,7 +82,7 @@ fn read_bytes( for iov in iovs_arr_cell { let iov_inner = iov.get(); - let bytes = iov_inner.buf.deref(memory, 0, iov_inner.buf_len)?; + let bytes = WasmPtr::::new(iov_inner.buf).deref(memory, 0, iov_inner.buf_len)?; let mut raw_bytes: &mut [u8] = unsafe { &mut *(bytes as *const [_] as *mut [_] as *mut [u8]) }; bytes_read += reader.read(raw_bytes).map_err(|_| __WASI_EIO)? as u32;