wasi-common: update trait methods to take &GuestPtr args.
This commit is contained in:
@@ -14,11 +14,14 @@ use wiggle_runtime::{GuestBorrows, GuestPtr};
|
||||
impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
fn args_get<'b>(
|
||||
&self,
|
||||
mut argv: GuestPtr<'b, GuestPtr<'b, u8>>,
|
||||
mut argv_buf: GuestPtr<'b, u8>,
|
||||
argv: &GuestPtr<'b, GuestPtr<'b, u8>>,
|
||||
argv_buf: &GuestPtr<'b, u8>,
|
||||
) -> Result<()> {
|
||||
trace!("args_get(argv_ptr={:?}, argv_buf={:?})", argv, argv_buf);
|
||||
|
||||
let mut argv = argv.clone();
|
||||
let mut argv_buf = argv_buf.clone();
|
||||
|
||||
for arg in &self.args {
|
||||
let arg_bytes = arg.as_bytes_with_nul();
|
||||
let elems = arg_bytes.len().try_into()?;
|
||||
@@ -49,8 +52,8 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
|
||||
fn environ_get<'b>(
|
||||
&self,
|
||||
mut environ: GuestPtr<'b, GuestPtr<'b, u8>>,
|
||||
mut environ_buf: GuestPtr<'b, u8>,
|
||||
environ: &GuestPtr<'b, GuestPtr<'b, u8>>,
|
||||
environ_buf: &GuestPtr<'b, u8>,
|
||||
) -> Result<()> {
|
||||
trace!(
|
||||
"environ_get(environ={:?}, environ_buf={:?})",
|
||||
@@ -58,6 +61,9 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
environ_buf
|
||||
);
|
||||
|
||||
let mut environ = environ.clone();
|
||||
let mut environ_buf = environ_buf.clone();
|
||||
|
||||
for e in &self.env {
|
||||
let environ_bytes = e.as_bytes_with_nul();
|
||||
let elems = environ_bytes.len().try_into()?;
|
||||
@@ -409,7 +415,7 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
fn fd_prestat_dir_name(
|
||||
&self,
|
||||
fd: types::Fd,
|
||||
path: GuestPtr<u8>,
|
||||
path: &GuestPtr<u8>,
|
||||
path_len: types::Size,
|
||||
) -> Result<()> {
|
||||
trace!(
|
||||
@@ -536,7 +542,7 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
fn fd_readdir(
|
||||
&self,
|
||||
fd: types::Fd,
|
||||
buf: GuestPtr<u8>,
|
||||
buf: &GuestPtr<u8>,
|
||||
buf_len: types::Size,
|
||||
cookie: types::Dircookie,
|
||||
) -> Result<types::Size> {
|
||||
@@ -555,10 +561,11 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
|
||||
fn copy_entities<T: Iterator<Item = Result<(types::Dirent, String)>>>(
|
||||
iter: T,
|
||||
mut buf: GuestPtr<u8>,
|
||||
buf: &GuestPtr<u8>,
|
||||
buf_len: types::Size,
|
||||
) -> Result<types::Size> {
|
||||
let mut bufused = 0;
|
||||
let mut buf = buf.clone();
|
||||
for pair in iter {
|
||||
let (dirent, name) = pair?;
|
||||
let dirent_raw = dirent.as_bytes()?;
|
||||
@@ -971,7 +978,7 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
&self,
|
||||
dirfd: types::Fd,
|
||||
path: &GuestPtr<'_, str>,
|
||||
buf: GuestPtr<u8>,
|
||||
buf: &GuestPtr<u8>,
|
||||
buf_len: types::Size,
|
||||
) -> Result<types::Size> {
|
||||
trace!(
|
||||
@@ -1140,8 +1147,8 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
|
||||
fn poll_oneoff(
|
||||
&self,
|
||||
in_: GuestPtr<types::Subscription>,
|
||||
out: GuestPtr<types::Event>,
|
||||
in_: &GuestPtr<types::Subscription>,
|
||||
out: &GuestPtr<types::Event>,
|
||||
nsubscriptions: types::Size,
|
||||
) -> Result<types::Size> {
|
||||
trace!(
|
||||
@@ -1294,7 +1301,7 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn random_get(&self, buf: GuestPtr<u8>, buf_len: types::Size) -> Result<()> {
|
||||
fn random_get(&self, buf: &GuestPtr<u8>, buf_len: types::Size) -> Result<()> {
|
||||
trace!("random_get(buf={:?}, buf_len={:?})", buf, buf_len);
|
||||
|
||||
let slice = unsafe {
|
||||
|
||||
Reference in New Issue
Block a user