From 5cee576b7b0ed577d0e6a064de29eae46f9977a0 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 29 Mar 2019 17:00:58 -0700 Subject: [PATCH] add some syscall skeletons; context switching --- lib/wasi/src/syscalls/mod.rs | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/wasi/src/syscalls/mod.rs b/lib/wasi/src/syscalls/mod.rs index d72cbf466..227dd4647 100644 --- a/lib/wasi/src/syscalls/mod.rs +++ b/lib/wasi/src/syscalls/mod.rs @@ -240,16 +240,39 @@ pub fn fd_prestat_get( fd: __wasi_fd_t, buf: WasmPtr<__wasi_prestat_t>, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + + if let Some(prestat_ptr) = buf.deref(memory) { + // open fd + // write info to prestat_ptr + __WASI_ESUCCESS + } else { + __WASI_EFAULT + } } + pub fn fd_prestat_dir_name( ctx: &mut Ctx, fd: __wasi_fd_t, path: WasmPtr, path_len: u32, ) -> __wasi_errno_t { - unimplemented!() + let memory = ctx.memory(0); + + if let Some(path_chars) = path.deref(memory, 0, path_len) { + if true /* check if dir */ { + // get name + // write name + // if overflow __WASI_EOVERFLOW + __WASI_ESUCCESS + } else { + __WASI_ENOTDIR + } + } else { + __WASI_EFAULT + } } + pub fn fd_pwrite( ctx: &mut Ctx, fd: __wasi_fd_t,