|
|
|
@@ -1,6 +1,6 @@
|
|
|
|
use cranelift_codegen::ir::types::{Type, I32, I64};
|
|
|
|
use cranelift_codegen::ir::types::{Type, I32, I64};
|
|
|
|
use log::{error, trace};
|
|
|
|
use log::{error, trace};
|
|
|
|
use wasi_common::{hostcalls, wasm32, WasiCtx};
|
|
|
|
use wasi_common::{hostcalls, wasi, wasi32, WasiCtx};
|
|
|
|
use wasmtime_runtime::{Export, VMContext};
|
|
|
|
use wasmtime_runtime::{Export, VMContext};
|
|
|
|
|
|
|
|
|
|
|
|
pub trait AbiRet {
|
|
|
|
pub trait AbiRet {
|
|
|
|
@@ -74,7 +74,7 @@ impl AbiRet for () {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fn get_wasi_ctx(vmctx: &mut VMContext) -> Result<&mut WasiCtx, wasm32::__wasi_errno_t> {
|
|
|
|
fn get_wasi_ctx(vmctx: &mut VMContext) -> Result<&mut WasiCtx, wasi::__wasi_errno_t> {
|
|
|
|
unsafe {
|
|
|
|
unsafe {
|
|
|
|
vmctx
|
|
|
|
vmctx
|
|
|
|
.host_state()
|
|
|
|
.host_state()
|
|
|
|
@@ -83,7 +83,7 @@ fn get_wasi_ctx(vmctx: &mut VMContext) -> Result<&mut WasiCtx, wasm32::__wasi_er
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fn get_memory(vmctx: &mut VMContext) -> Result<&mut [u8], wasm32::__wasi_errno_t> {
|
|
|
|
fn get_memory(vmctx: &mut VMContext) -> Result<&mut [u8], wasi::__wasi_errno_t> {
|
|
|
|
unsafe {
|
|
|
|
unsafe {
|
|
|
|
match vmctx.lookup_global_export("memory") {
|
|
|
|
match vmctx.lookup_global_export("memory") {
|
|
|
|
Some(Export::Memory {
|
|
|
|
Some(Export::Memory {
|
|
|
|
@@ -99,7 +99,7 @@ fn get_memory(vmctx: &mut VMContext) -> Result<&mut [u8], wasm32::__wasi_errno_t
|
|
|
|
"no export named \"memory\", or the export isn't a mem: {:?}",
|
|
|
|
"no export named \"memory\", or the export isn't a mem: {:?}",
|
|
|
|
x
|
|
|
|
x
|
|
|
|
);
|
|
|
|
);
|
|
|
|
Err(wasm32::__WASI_EINVAL)
|
|
|
|
Err(wasi::__WASI_EINVAL)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -110,7 +110,7 @@ macro_rules! ok_or_errno {
|
|
|
|
match $expr {
|
|
|
|
match $expr {
|
|
|
|
Ok(v) => v,
|
|
|
|
Ok(v) => v,
|
|
|
|
Err(e) => {
|
|
|
|
Err(e) => {
|
|
|
|
trace!(" -> errno={}", wasm32::strerror(e));
|
|
|
|
trace!(" -> errno={}", wasi::strerror(e));
|
|
|
|
return e;
|
|
|
|
return e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -163,9 +163,9 @@ macro_rules! syscalls {
|
|
|
|
syscalls! {
|
|
|
|
syscalls! {
|
|
|
|
pub unsafe extern "C" fn args_get(
|
|
|
|
pub unsafe extern "C" fn args_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
argv: wasm32::uintptr_t,
|
|
|
|
argv: wasi32::uintptr_t,
|
|
|
|
argv_buf: wasm32::uintptr_t,
|
|
|
|
argv_buf: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"args_get(argv={:#x?}, argv_buf={:#x?})",
|
|
|
|
"args_get(argv={:#x?}, argv_buf={:#x?})",
|
|
|
|
argv,
|
|
|
|
argv,
|
|
|
|
@@ -178,9 +178,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn args_sizes_get(
|
|
|
|
pub unsafe extern "C" fn args_sizes_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
argc: wasm32::uintptr_t,
|
|
|
|
argc: wasi32::uintptr_t,
|
|
|
|
argv_buf_size: wasm32::uintptr_t,
|
|
|
|
argv_buf_size: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"args_sizes_get(argc={:#x?}, argv_buf_size={:#x?})",
|
|
|
|
"args_sizes_get(argc={:#x?}, argv_buf_size={:#x?})",
|
|
|
|
argc,
|
|
|
|
argc,
|
|
|
|
@@ -193,9 +193,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn clock_res_get(
|
|
|
|
pub unsafe extern "C" fn clock_res_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
clock_id: wasm32::__wasi_clockid_t,
|
|
|
|
clock_id: wasi::__wasi_clockid_t,
|
|
|
|
resolution: wasm32::uintptr_t,
|
|
|
|
resolution: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"clock_res_get(clock_id={:?}, resolution={:#x?})",
|
|
|
|
"clock_res_get(clock_id={:?}, resolution={:#x?})",
|
|
|
|
clock_id,
|
|
|
|
clock_id,
|
|
|
|
@@ -207,10 +207,10 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn clock_time_get(
|
|
|
|
pub unsafe extern "C" fn clock_time_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
clock_id: wasm32::__wasi_clockid_t,
|
|
|
|
clock_id: wasi::__wasi_clockid_t,
|
|
|
|
precision: wasm32::__wasi_timestamp_t,
|
|
|
|
precision: wasi::__wasi_timestamp_t,
|
|
|
|
time: wasm32::uintptr_t,
|
|
|
|
time: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"clock_time_get(clock_id={:?}, precision={:?}, time={:#x?})",
|
|
|
|
"clock_time_get(clock_id={:?}, precision={:?}, time={:#x?})",
|
|
|
|
clock_id,
|
|
|
|
clock_id,
|
|
|
|
@@ -223,9 +223,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn environ_get(
|
|
|
|
pub unsafe extern "C" fn environ_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
environ: wasm32::uintptr_t,
|
|
|
|
environ: wasi32::uintptr_t,
|
|
|
|
environ_buf: wasm32::uintptr_t,
|
|
|
|
environ_buf: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"environ_get(environ={:#x?}, environ_buf={:#x?})",
|
|
|
|
"environ_get(environ={:#x?}, environ_buf={:#x?})",
|
|
|
|
environ,
|
|
|
|
environ,
|
|
|
|
@@ -238,9 +238,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn environ_sizes_get(
|
|
|
|
pub unsafe extern "C" fn environ_sizes_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
environ_count: wasm32::uintptr_t,
|
|
|
|
environ_count: wasi32::uintptr_t,
|
|
|
|
environ_buf_size: wasm32::uintptr_t,
|
|
|
|
environ_buf_size: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"environ_sizes_get(environ_count={:#x?}, environ_buf_size={:#x?})",
|
|
|
|
"environ_sizes_get(environ_count={:#x?}, environ_buf_size={:#x?})",
|
|
|
|
environ_count,
|
|
|
|
environ_count,
|
|
|
|
@@ -253,9 +253,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_prestat_get(
|
|
|
|
pub unsafe extern "C" fn fd_prestat_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
buf: wasm32::uintptr_t,
|
|
|
|
buf: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_prestat_get(fd={:?}, buf={:#x?})", fd, buf);
|
|
|
|
trace!("fd_prestat_get(fd={:?}, buf={:#x?})", fd, buf);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
@@ -264,10 +264,10 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_prestat_dir_name(
|
|
|
|
pub unsafe extern "C" fn fd_prestat_dir_name(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
path: wasm32::uintptr_t,
|
|
|
|
path: wasi32::uintptr_t,
|
|
|
|
path_len: wasm32::size_t,
|
|
|
|
path_len: wasi32::size_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_prestat_dir_name(fd={:?}, path={:#x?}, path_len={})", fd, path, path_len);
|
|
|
|
trace!("fd_prestat_dir_name(fd={:?}, path={:#x?}, path_len={})", fd, path, path_len);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
@@ -276,8 +276,8 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_close(
|
|
|
|
pub unsafe extern "C" fn fd_close(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_close(fd={:?})", fd);
|
|
|
|
trace!("fd_close(fd={:?})", fd);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
hostcalls::fd_close(wasi_ctx, fd)
|
|
|
|
hostcalls::fd_close(wasi_ctx, fd)
|
|
|
|
@@ -285,8 +285,8 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_datasync(
|
|
|
|
pub unsafe extern "C" fn fd_datasync(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_datasync(fd={:?})", fd);
|
|
|
|
trace!("fd_datasync(fd={:?})", fd);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
hostcalls::fd_datasync(wasi_ctx, fd)
|
|
|
|
hostcalls::fd_datasync(wasi_ctx, fd)
|
|
|
|
@@ -294,12 +294,12 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_pread(
|
|
|
|
pub unsafe extern "C" fn fd_pread(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
iovs: wasm32::uintptr_t,
|
|
|
|
iovs: wasi32::uintptr_t,
|
|
|
|
iovs_len: wasm32::size_t,
|
|
|
|
iovs_len: wasi32::size_t,
|
|
|
|
offset: wasm32::__wasi_filesize_t,
|
|
|
|
offset: wasi::__wasi_filesize_t,
|
|
|
|
nread: wasm32::uintptr_t,
|
|
|
|
nread: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_pread(fd={:?}, iovs={:#x?}, iovs_len={:?}, offset={}, nread={:#x?})",
|
|
|
|
"fd_pread(fd={:?}, iovs={:#x?}, iovs_len={:?}, offset={}, nread={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -323,12 +323,12 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_pwrite(
|
|
|
|
pub unsafe extern "C" fn fd_pwrite(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
iovs: wasm32::uintptr_t,
|
|
|
|
iovs: wasi32::uintptr_t,
|
|
|
|
iovs_len: wasm32::size_t,
|
|
|
|
iovs_len: wasi32::size_t,
|
|
|
|
offset: wasm32::__wasi_filesize_t,
|
|
|
|
offset: wasi::__wasi_filesize_t,
|
|
|
|
nwritten: wasm32::uintptr_t,
|
|
|
|
nwritten: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_pwrite(fd={:?}, iovs={:#x?}, iovs_len={:?}, offset={}, nwritten={:#x?})",
|
|
|
|
"fd_pwrite(fd={:?}, iovs={:#x?}, iovs_len={:?}, offset={}, nwritten={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -352,11 +352,11 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_read(
|
|
|
|
pub unsafe extern "C" fn fd_read(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
iovs: wasm32::uintptr_t,
|
|
|
|
iovs: wasi32::uintptr_t,
|
|
|
|
iovs_len: wasm32::size_t,
|
|
|
|
iovs_len: wasi32::size_t,
|
|
|
|
nread: wasm32::uintptr_t,
|
|
|
|
nread: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_read(fd={:?}, iovs={:#x?}, iovs_len={:?}, nread={:#x?})",
|
|
|
|
"fd_read(fd={:?}, iovs={:#x?}, iovs_len={:?}, nread={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -371,9 +371,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_renumber(
|
|
|
|
pub unsafe extern "C" fn fd_renumber(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
from: wasm32::__wasi_fd_t,
|
|
|
|
from: wasi::__wasi_fd_t,
|
|
|
|
to: wasm32::__wasi_fd_t,
|
|
|
|
to: wasi::__wasi_fd_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_renumber(from={:?}, to={:?})", from, to);
|
|
|
|
trace!("fd_renumber(from={:?}, to={:?})", from, to);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
hostcalls::fd_renumber(wasi_ctx, from, to)
|
|
|
|
hostcalls::fd_renumber(wasi_ctx, from, to)
|
|
|
|
@@ -381,16 +381,16 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_seek(
|
|
|
|
pub unsafe extern "C" fn fd_seek(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
offset: wasm32::__wasi_filedelta_t,
|
|
|
|
offset: wasi::__wasi_filedelta_t,
|
|
|
|
whence: wasm32::__wasi_whence_t,
|
|
|
|
whence: wasi::__wasi_whence_t,
|
|
|
|
newoffset: wasm32::uintptr_t,
|
|
|
|
newoffset: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_seek(fd={:?}, offset={:?}, whence={}, newoffset={:#x?})",
|
|
|
|
"fd_seek(fd={:?}, offset={:?}, whence={}, newoffset={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
offset,
|
|
|
|
offset,
|
|
|
|
wasm32::whence_to_str(whence),
|
|
|
|
wasi::whence_to_str(whence),
|
|
|
|
newoffset
|
|
|
|
newoffset
|
|
|
|
);
|
|
|
|
);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
@@ -400,9 +400,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_tell(
|
|
|
|
pub unsafe extern "C" fn fd_tell(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
newoffset: wasm32::uintptr_t,
|
|
|
|
newoffset: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_tell(fd={:?}, newoffset={:#x?})", fd, newoffset);
|
|
|
|
trace!("fd_tell(fd={:?}, newoffset={:#x?})", fd, newoffset);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
@@ -411,9 +411,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_fdstat_get(
|
|
|
|
pub unsafe extern "C" fn fd_fdstat_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
buf: wasm32::uintptr_t,
|
|
|
|
buf: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_fdstat_get(fd={:?}, buf={:#x?})", fd, buf);
|
|
|
|
trace!("fd_fdstat_get(fd={:?}, buf={:#x?})", fd, buf);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
@@ -422,9 +422,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_fdstat_set_flags(
|
|
|
|
pub unsafe extern "C" fn fd_fdstat_set_flags(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
flags: wasm32::__wasi_fdflags_t,
|
|
|
|
flags: wasi::__wasi_fdflags_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_fdstat_set_flags(fd={:?}, flags={:#x?})",
|
|
|
|
"fd_fdstat_set_flags(fd={:?}, flags={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -436,10 +436,10 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_fdstat_set_rights(
|
|
|
|
pub unsafe extern "C" fn fd_fdstat_set_rights(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
fs_rights_base: wasm32::__wasi_rights_t,
|
|
|
|
fs_rights_base: wasi::__wasi_rights_t,
|
|
|
|
fs_rights_inheriting: wasm32::__wasi_rights_t,
|
|
|
|
fs_rights_inheriting: wasi::__wasi_rights_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_fdstat_set_rights(fd={:?}, fs_rights_base={:#x?}, fs_rights_inheriting={:#x?})",
|
|
|
|
"fd_fdstat_set_rights(fd={:?}, fs_rights_base={:#x?}, fs_rights_inheriting={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -457,8 +457,8 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_sync(
|
|
|
|
pub unsafe extern "C" fn fd_sync(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_sync(fd={:?})", fd);
|
|
|
|
trace!("fd_sync(fd={:?})", fd);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
hostcalls::fd_sync(wasi_ctx, fd)
|
|
|
|
hostcalls::fd_sync(wasi_ctx, fd)
|
|
|
|
@@ -466,11 +466,11 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_write(
|
|
|
|
pub unsafe extern "C" fn fd_write(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
iovs: wasm32::uintptr_t,
|
|
|
|
iovs: wasi32::uintptr_t,
|
|
|
|
iovs_len: wasm32::size_t,
|
|
|
|
iovs_len: wasi32::size_t,
|
|
|
|
nwritten: wasm32::uintptr_t,
|
|
|
|
nwritten: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_write(fd={:?}, iovs={:#x?}, iovs_len={:?}, nwritten={:#x?})",
|
|
|
|
"fd_write(fd={:?}, iovs={:#x?}, iovs_len={:?}, nwritten={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -485,11 +485,11 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_advise(
|
|
|
|
pub unsafe extern "C" fn fd_advise(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
offset: wasm32::__wasi_filesize_t,
|
|
|
|
offset: wasi::__wasi_filesize_t,
|
|
|
|
len: wasm32::__wasi_filesize_t,
|
|
|
|
len: wasi::__wasi_filesize_t,
|
|
|
|
advice: wasm32::__wasi_advice_t,
|
|
|
|
advice: wasi::__wasi_advice_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_advise(fd={:?}, offset={}, len={}, advice={:?})",
|
|
|
|
"fd_advise(fd={:?}, offset={}, len={}, advice={:?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -503,10 +503,10 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_allocate(
|
|
|
|
pub unsafe extern "C" fn fd_allocate(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
offset: wasm32::__wasi_filesize_t,
|
|
|
|
offset: wasi::__wasi_filesize_t,
|
|
|
|
len: wasm32::__wasi_filesize_t,
|
|
|
|
len: wasi::__wasi_filesize_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_allocate(fd={:?}, offset={}, len={})", fd, offset, len);
|
|
|
|
trace!("fd_allocate(fd={:?}, offset={}, len={})", fd, offset, len);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
hostcalls::fd_allocate(wasi_ctx, fd, offset, len)
|
|
|
|
hostcalls::fd_allocate(wasi_ctx, fd, offset, len)
|
|
|
|
@@ -514,10 +514,10 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_create_directory(
|
|
|
|
pub unsafe extern "C" fn path_create_directory(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
path: wasm32::uintptr_t,
|
|
|
|
path: wasi32::uintptr_t,
|
|
|
|
path_len: wasm32::size_t,
|
|
|
|
path_len: wasi32::size_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_create_directory(fd={:?}, path={:#x?}, path_len={})",
|
|
|
|
"path_create_directory(fd={:?}, path={:#x?}, path_len={})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -531,14 +531,14 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_link(
|
|
|
|
pub unsafe extern "C" fn path_link(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd0: wasm32::__wasi_fd_t,
|
|
|
|
fd0: wasi::__wasi_fd_t,
|
|
|
|
flags0: wasm32::__wasi_lookupflags_t,
|
|
|
|
flags0: wasi::__wasi_lookupflags_t,
|
|
|
|
path0: wasm32::uintptr_t,
|
|
|
|
path0: wasi32::uintptr_t,
|
|
|
|
path_len0: wasm32::size_t,
|
|
|
|
path_len0: wasi32::size_t,
|
|
|
|
fd1: wasm32::__wasi_fd_t,
|
|
|
|
fd1: wasi::__wasi_fd_t,
|
|
|
|
path1: wasm32::uintptr_t,
|
|
|
|
path1: wasi32::uintptr_t,
|
|
|
|
path_len1: wasm32::size_t,
|
|
|
|
path_len1: wasi32::size_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_link(fd0={:?}, flags0={:?}, path0={:#x?}, path_len0={}, fd1={:?}, path1={:#x?}, path_len1={})",
|
|
|
|
"path_link(fd0={:?}, flags0={:?}, path0={:#x?}, path_len0={}, fd1={:?}, path1={:#x?}, path_len1={})",
|
|
|
|
fd0,
|
|
|
|
fd0,
|
|
|
|
@@ -568,16 +568,16 @@ syscalls! {
|
|
|
|
// the `fd` by reference?
|
|
|
|
// the `fd` by reference?
|
|
|
|
pub unsafe extern "C" fn path_open(
|
|
|
|
pub unsafe extern "C" fn path_open(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
dirfd: wasm32::__wasi_fd_t,
|
|
|
|
dirfd: wasi::__wasi_fd_t,
|
|
|
|
dirflags: wasm32::__wasi_lookupflags_t,
|
|
|
|
dirflags: wasi::__wasi_lookupflags_t,
|
|
|
|
path: wasm32::uintptr_t,
|
|
|
|
path: wasi32::uintptr_t,
|
|
|
|
path_len: wasm32::size_t,
|
|
|
|
path_len: wasi32::size_t,
|
|
|
|
oflags: wasm32::__wasi_oflags_t,
|
|
|
|
oflags: wasi::__wasi_oflags_t,
|
|
|
|
fs_rights_base: wasm32::__wasi_rights_t,
|
|
|
|
fs_rights_base: wasi::__wasi_rights_t,
|
|
|
|
fs_rights_inheriting: wasm32::__wasi_rights_t,
|
|
|
|
fs_rights_inheriting: wasi::__wasi_rights_t,
|
|
|
|
fs_flags: wasm32::__wasi_fdflags_t,
|
|
|
|
fs_flags: wasi::__wasi_fdflags_t,
|
|
|
|
fd: wasm32::uintptr_t,
|
|
|
|
fd: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_open(dirfd={:?}, dirflags={:?}, path={:#x?}, path_len={:?}, oflags={:#x?}, fs_rights_base={:#x?}, fs_rights_inheriting={:#x?}, fs_flags={:#x?}, fd={:#x?})",
|
|
|
|
"path_open(dirfd={:?}, dirflags={:?}, path={:#x?}, path_len={:?}, oflags={:#x?}, fs_rights_base={:#x?}, fs_rights_inheriting={:#x?}, fs_flags={:#x?}, fd={:#x?})",
|
|
|
|
dirfd,
|
|
|
|
dirfd,
|
|
|
|
@@ -609,12 +609,12 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_readdir(
|
|
|
|
pub unsafe extern "C" fn fd_readdir(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
buf: wasm32::uintptr_t,
|
|
|
|
buf: wasi32::uintptr_t,
|
|
|
|
buf_len: wasm32::size_t,
|
|
|
|
buf_len: wasi32::size_t,
|
|
|
|
cookie: wasm32::__wasi_dircookie_t,
|
|
|
|
cookie: wasi::__wasi_dircookie_t,
|
|
|
|
buf_used: wasm32::uintptr_t,
|
|
|
|
buf_used: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_readdir(fd={:?}, buf={:#x?}, buf_len={}, cookie={:#x?}, buf_used={:#x?})",
|
|
|
|
"fd_readdir(fd={:?}, buf={:#x?}, buf_len={}, cookie={:#x?}, buf_used={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -638,13 +638,13 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_readlink(
|
|
|
|
pub unsafe extern "C" fn path_readlink(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
path: wasm32::uintptr_t,
|
|
|
|
path: wasi32::uintptr_t,
|
|
|
|
path_len: wasm32::size_t,
|
|
|
|
path_len: wasi32::size_t,
|
|
|
|
buf: wasm32::uintptr_t,
|
|
|
|
buf: wasi32::uintptr_t,
|
|
|
|
buf_len: wasm32::size_t,
|
|
|
|
buf_len: wasi32::size_t,
|
|
|
|
buf_used: wasm32::uintptr_t,
|
|
|
|
buf_used: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_readlink(fd={:?}, path={:#x?}, path_len={:?}, buf={:#x?}, buf_len={}, buf_used={:#x?})",
|
|
|
|
"path_readlink(fd={:?}, path={:#x?}, path_len={:?}, buf={:#x?}, buf_len={}, buf_used={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -670,13 +670,13 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_rename(
|
|
|
|
pub unsafe extern "C" fn path_rename(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd0: wasm32::__wasi_fd_t,
|
|
|
|
fd0: wasi::__wasi_fd_t,
|
|
|
|
path0: wasm32::uintptr_t,
|
|
|
|
path0: wasi32::uintptr_t,
|
|
|
|
path_len0: wasm32::size_t,
|
|
|
|
path_len0: wasi32::size_t,
|
|
|
|
fd1: wasm32::__wasi_fd_t,
|
|
|
|
fd1: wasi::__wasi_fd_t,
|
|
|
|
path1: wasm32::uintptr_t,
|
|
|
|
path1: wasi32::uintptr_t,
|
|
|
|
path_len1: wasm32::size_t,
|
|
|
|
path_len1: wasi32::size_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_rename(fd0={:?}, path0={:#x?}, path_len0={:?}, fd1={:?}, path1={:#x?}, path_len1={:?})",
|
|
|
|
"path_rename(fd0={:?}, path0={:#x?}, path_len0={:?}, fd1={:?}, path1={:#x?}, path_len1={:?})",
|
|
|
|
fd0,
|
|
|
|
fd0,
|
|
|
|
@@ -702,9 +702,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_filestat_get(
|
|
|
|
pub unsafe extern "C" fn fd_filestat_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
buf: wasm32::uintptr_t,
|
|
|
|
buf: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("fd_filestat_get(fd={:?}, buf={:#x?})", fd, buf);
|
|
|
|
trace!("fd_filestat_get(fd={:?}, buf={:#x?})", fd, buf);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
@@ -713,11 +713,11 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_filestat_set_times(
|
|
|
|
pub unsafe extern "C" fn fd_filestat_set_times(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
st_atim: wasm32::__wasi_timestamp_t,
|
|
|
|
st_atim: wasi::__wasi_timestamp_t,
|
|
|
|
st_mtim: wasm32::__wasi_timestamp_t,
|
|
|
|
st_mtim: wasi::__wasi_timestamp_t,
|
|
|
|
fstflags: wasm32::__wasi_fstflags_t,
|
|
|
|
fstflags: wasi::__wasi_fstflags_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_filestat_set_times(fd={:?}, st_atim={}, st_mtim={}, fstflags={:#x?})",
|
|
|
|
"fd_filestat_set_times(fd={:?}, st_atim={}, st_mtim={}, fstflags={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -730,9 +730,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn fd_filestat_set_size(
|
|
|
|
pub unsafe extern "C" fn fd_filestat_set_size(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
size: wasm32::__wasi_filesize_t,
|
|
|
|
size: wasi::__wasi_filesize_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"fd_filestat_set_size(fd={:?}, size={})",
|
|
|
|
"fd_filestat_set_size(fd={:?}, size={})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -744,12 +744,12 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_filestat_get(
|
|
|
|
pub unsafe extern "C" fn path_filestat_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
flags: wasm32::__wasi_lookupflags_t,
|
|
|
|
flags: wasi::__wasi_lookupflags_t,
|
|
|
|
path: wasm32::uintptr_t,
|
|
|
|
path: wasi32::uintptr_t,
|
|
|
|
path_len: wasm32::size_t,
|
|
|
|
path_len: wasi32::size_t,
|
|
|
|
buf: wasm32::uintptr_t,
|
|
|
|
buf: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_filestat_get(fd={:?}, flags={:?}, path={:#x?}, path_len={}, buf={:#x?})",
|
|
|
|
"path_filestat_get(fd={:?}, flags={:?}, path={:#x?}, path_len={}, buf={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -765,14 +765,14 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_filestat_set_times(
|
|
|
|
pub unsafe extern "C" fn path_filestat_set_times(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
flags: wasm32::__wasi_lookupflags_t,
|
|
|
|
flags: wasi::__wasi_lookupflags_t,
|
|
|
|
path: wasm32::uintptr_t,
|
|
|
|
path: wasi32::uintptr_t,
|
|
|
|
path_len: wasm32::size_t,
|
|
|
|
path_len: wasi32::size_t,
|
|
|
|
st_atim: wasm32::__wasi_timestamp_t,
|
|
|
|
st_atim: wasi::__wasi_timestamp_t,
|
|
|
|
st_mtim: wasm32::__wasi_timestamp_t,
|
|
|
|
st_mtim: wasi::__wasi_timestamp_t,
|
|
|
|
fstflags: wasm32::__wasi_fstflags_t,
|
|
|
|
fstflags: wasi::__wasi_fstflags_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_filestat_set_times(fd={:?}, flags={:?}, path={:#x?}, path_len={}, st_atim={}, st_mtim={}, fstflags={:#x?})",
|
|
|
|
"path_filestat_set_times(fd={:?}, flags={:?}, path={:#x?}, path_len={}, st_atim={}, st_mtim={}, fstflags={:#x?})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -799,12 +799,12 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_symlink(
|
|
|
|
pub unsafe extern "C" fn path_symlink(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
path0: wasm32::uintptr_t,
|
|
|
|
path0: wasi32::uintptr_t,
|
|
|
|
path_len0: wasm32::size_t,
|
|
|
|
path_len0: wasi32::size_t,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
path1: wasm32::uintptr_t,
|
|
|
|
path1: wasi32::uintptr_t,
|
|
|
|
path_len1: wasm32::size_t,
|
|
|
|
path_len1: wasi32::size_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_symlink(path0={:#x?}, path_len0={}, fd={:?}, path1={:#x?}, path_len1={})",
|
|
|
|
"path_symlink(path0={:#x?}, path_len0={}, fd={:?}, path1={:#x?}, path_len1={})",
|
|
|
|
path0,
|
|
|
|
path0,
|
|
|
|
@@ -828,10 +828,10 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_unlink_file(
|
|
|
|
pub unsafe extern "C" fn path_unlink_file(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
path: wasm32::uintptr_t,
|
|
|
|
path: wasi32::uintptr_t,
|
|
|
|
path_len: wasm32::size_t,
|
|
|
|
path_len: wasi32::size_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_unlink_file(fd={:?}, path={:#x?}, path_len={})",
|
|
|
|
"path_unlink_file(fd={:?}, path={:#x?}, path_len={})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -845,10 +845,10 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn path_remove_directory(
|
|
|
|
pub unsafe extern "C" fn path_remove_directory(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
fd: wasm32::__wasi_fd_t,
|
|
|
|
fd: wasi::__wasi_fd_t,
|
|
|
|
path: wasm32::uintptr_t,
|
|
|
|
path: wasi32::uintptr_t,
|
|
|
|
path_len: wasm32::size_t,
|
|
|
|
path_len: wasi32::size_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"path_remove_directory(fd={:?}, path={:#x?}, path_len={})",
|
|
|
|
"path_remove_directory(fd={:?}, path={:#x?}, path_len={})",
|
|
|
|
fd,
|
|
|
|
fd,
|
|
|
|
@@ -862,11 +862,11 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn poll_oneoff(
|
|
|
|
pub unsafe extern "C" fn poll_oneoff(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
in_: wasm32::uintptr_t,
|
|
|
|
in_: wasi32::uintptr_t,
|
|
|
|
out: wasm32::uintptr_t,
|
|
|
|
out: wasi32::uintptr_t,
|
|
|
|
nsubscriptions: wasm32::size_t,
|
|
|
|
nsubscriptions: wasi32::size_t,
|
|
|
|
nevents: wasm32::uintptr_t,
|
|
|
|
nevents: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"poll_oneoff(in={:#x?}, out={:#x?}, nsubscriptions={}, nevents={:#x?})",
|
|
|
|
"poll_oneoff(in={:#x?}, out={:#x?}, nsubscriptions={}, nevents={:#x?})",
|
|
|
|
in_,
|
|
|
|
in_,
|
|
|
|
@@ -886,8 +886,8 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn proc_raise(
|
|
|
|
pub unsafe extern "C" fn proc_raise(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
sig: wasm32::__wasi_signal_t,
|
|
|
|
sig: wasi::__wasi_signal_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("proc_raise(sig={:?})", sig);
|
|
|
|
trace!("proc_raise(sig={:?})", sig);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
@@ -896,28 +896,28 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn random_get(
|
|
|
|
pub unsafe extern "C" fn random_get(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
buf: wasm32::uintptr_t,
|
|
|
|
buf: wasi32::uintptr_t,
|
|
|
|
buf_len: wasm32::size_t,
|
|
|
|
buf_len: wasi32::size_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("random_get(buf={:#x?}, buf_len={:?})", buf, buf_len);
|
|
|
|
trace!("random_get(buf={:#x?}, buf_len={:?})", buf, buf_len);
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
hostcalls::random_get(memory, buf, buf_len)
|
|
|
|
hostcalls::random_get(memory, buf, buf_len)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn sched_yield(_vmctx: *mut VMContext,) -> wasm32::__wasi_errno_t {
|
|
|
|
pub unsafe extern "C" fn sched_yield(_vmctx: *mut VMContext,) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("sched_yield(void)");
|
|
|
|
trace!("sched_yield(void)");
|
|
|
|
hostcalls::sched_yield()
|
|
|
|
hostcalls::sched_yield()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn sock_recv(
|
|
|
|
pub unsafe extern "C" fn sock_recv(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
sock: wasm32::__wasi_fd_t,
|
|
|
|
sock: wasi::__wasi_fd_t,
|
|
|
|
ri_data: wasm32::uintptr_t,
|
|
|
|
ri_data: wasi32::uintptr_t,
|
|
|
|
ri_data_len: wasm32::size_t,
|
|
|
|
ri_data_len: wasi32::size_t,
|
|
|
|
ri_flags: wasm32::__wasi_riflags_t,
|
|
|
|
ri_flags: wasi::__wasi_riflags_t,
|
|
|
|
ro_datalen: wasm32::uintptr_t,
|
|
|
|
ro_datalen: wasi32::uintptr_t,
|
|
|
|
ro_flags: wasm32::uintptr_t,
|
|
|
|
ro_flags: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"sock_recv(sock={:?}, ri_data={:#x?}, ri_data_len={}, ri_flags={:#x?}, ro_datalen={:#x?}, ro_flags={:#x?})",
|
|
|
|
"sock_recv(sock={:?}, ri_data={:#x?}, ri_data_len={}, ri_flags={:#x?}, ro_datalen={:#x?}, ro_flags={:#x?})",
|
|
|
|
sock,
|
|
|
|
sock,
|
|
|
|
@@ -940,12 +940,12 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn sock_send(
|
|
|
|
pub unsafe extern "C" fn sock_send(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
sock: wasm32::__wasi_fd_t,
|
|
|
|
sock: wasi::__wasi_fd_t,
|
|
|
|
si_data: wasm32::uintptr_t,
|
|
|
|
si_data: wasi32::uintptr_t,
|
|
|
|
si_data_len: wasm32::size_t,
|
|
|
|
si_data_len: wasi32::size_t,
|
|
|
|
si_flags: wasm32::__wasi_siflags_t,
|
|
|
|
si_flags: wasi::__wasi_siflags_t,
|
|
|
|
so_datalen: wasm32::uintptr_t,
|
|
|
|
so_datalen: wasi32::uintptr_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!(
|
|
|
|
trace!(
|
|
|
|
"sock_send(sock={:?}, si_data={:#x?}, si_data_len={}, si_flags={:#x?}, so_datalen={:#x?})",
|
|
|
|
"sock_send(sock={:?}, si_data={:#x?}, si_data_len={}, si_flags={:#x?}, so_datalen={:#x?})",
|
|
|
|
sock,
|
|
|
|
sock,
|
|
|
|
@@ -966,9 +966,9 @@ syscalls! {
|
|
|
|
|
|
|
|
|
|
|
|
pub unsafe extern "C" fn sock_shutdown(
|
|
|
|
pub unsafe extern "C" fn sock_shutdown(
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
vmctx: *mut VMContext,
|
|
|
|
sock: wasm32::__wasi_fd_t,
|
|
|
|
sock: wasi::__wasi_fd_t,
|
|
|
|
how: wasm32::__wasi_sdflags_t,
|
|
|
|
how: wasi::__wasi_sdflags_t,
|
|
|
|
) -> wasm32::__wasi_errno_t {
|
|
|
|
) -> wasi::__wasi_errno_t {
|
|
|
|
trace!("sock_shutdown(sock={:?}, how={:?})", sock, how);
|
|
|
|
trace!("sock_shutdown(sock={:?}, how={:?})", sock, how);
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let wasi_ctx = ok_or_errno!(get_wasi_ctx(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
let memory = ok_or_errno!(get_memory(&mut *vmctx));
|
|
|
|
|