This commit merges [CraneStation/wasi-common] repo as a subdir of this repo while preserving **all** of git history. There is an initiative to pull `wasi-common` into [CraneStation/wasmtime], and [CraneStation/wasmtime] becoming a monorepo. This came about for several reasons with a common theme of convenience, namely, having a monorepo: 1. cleans up the problem of dependencies (as we have seen first hand with dependabot enabled, it can cause some grief) 2. completely removes the problem of syncing the closely dependent repos (e.g., updating `wasi-common` with say a bugfix generally implies creating a "sync" commit for pulling in the changes into the "parent" repo, in this case, `wasmtime`) 3. mainly for the two reasons above, makes publishing to crates.io easier 4. hopefully streamlines the process of getting the community involved in contributing to `wasi-common` as now everything is one place [CraneStation/wasi-common]: https://github.com/CraneStation/wasi-common [CraneStation/wasmtime]: https://github.com/CraneStation/wasmtime
84 lines
2.3 KiB
Rust
84 lines
2.3 KiB
Rust
#![allow(non_camel_case_types)]
|
|
use crate::ctx::WasiCtx;
|
|
use crate::{wasi, wasi32};
|
|
use log::trace;
|
|
|
|
use wasi_common_cbindgen::wasi_common_cbindgen;
|
|
|
|
#[wasi_common_cbindgen]
|
|
pub unsafe fn proc_exit(rval: wasi::__wasi_exitcode_t) {
|
|
trace!("proc_exit(rval={:?})", rval);
|
|
// TODO: Rather than call std::process::exit here, we should trigger a
|
|
// stack unwind similar to a trap.
|
|
std::process::exit(rval as i32);
|
|
}
|
|
|
|
#[wasi_common_cbindgen]
|
|
pub unsafe fn proc_raise(
|
|
_wasi_ctx: &WasiCtx,
|
|
_memory: &mut [u8],
|
|
_sig: wasi::__wasi_signal_t,
|
|
) -> wasi::__wasi_errno_t {
|
|
unimplemented!("proc_raise")
|
|
}
|
|
|
|
hostcalls! {
|
|
pub unsafe fn args_get(
|
|
wasi_ctx: &WasiCtx,
|
|
memory: &mut [u8],
|
|
argv_ptr: wasi32::uintptr_t,
|
|
argv_buf: wasi32::uintptr_t,
|
|
) -> wasi::__wasi_errno_t;
|
|
|
|
pub unsafe fn args_sizes_get(
|
|
wasi_ctx: &WasiCtx,
|
|
memory: &mut [u8],
|
|
argc_ptr: wasi32::uintptr_t,
|
|
argv_buf_size_ptr: wasi32::uintptr_t,
|
|
) -> wasi::__wasi_errno_t;
|
|
|
|
pub unsafe fn environ_get(
|
|
wasi_ctx: &WasiCtx,
|
|
memory: &mut [u8],
|
|
environ_ptr: wasi32::uintptr_t,
|
|
environ_buf: wasi32::uintptr_t,
|
|
) -> wasi::__wasi_errno_t;
|
|
|
|
pub unsafe fn environ_sizes_get(
|
|
wasi_ctx: &WasiCtx,
|
|
memory: &mut [u8],
|
|
environ_count_ptr: wasi32::uintptr_t,
|
|
environ_size_ptr: wasi32::uintptr_t,
|
|
) -> wasi::__wasi_errno_t;
|
|
|
|
pub unsafe fn random_get(
|
|
memory: &mut [u8],
|
|
buf_ptr: wasi32::uintptr_t,
|
|
buf_len: wasi32::size_t,
|
|
) -> wasi::__wasi_errno_t;
|
|
|
|
pub unsafe fn clock_res_get(
|
|
memory: &mut [u8],
|
|
clock_id: wasi::__wasi_clockid_t,
|
|
resolution_ptr: wasi32::uintptr_t,
|
|
) -> wasi::__wasi_errno_t;
|
|
|
|
pub unsafe fn clock_time_get(
|
|
memory: &mut [u8],
|
|
clock_id: wasi::__wasi_clockid_t,
|
|
precision: wasi::__wasi_timestamp_t,
|
|
time_ptr: wasi32::uintptr_t,
|
|
) -> wasi::__wasi_errno_t;
|
|
|
|
pub unsafe fn poll_oneoff(
|
|
wasi_ctx: &WasiCtx,
|
|
memory: &mut [u8],
|
|
input: wasi32::uintptr_t,
|
|
output: wasi32::uintptr_t,
|
|
nsubscriptions: wasi32::size_t,
|
|
nevents: wasi32::uintptr_t,
|
|
) -> wasi::__wasi_errno_t;
|
|
|
|
pub unsafe fn sched_yield() -> wasi::__wasi_errno_t;
|
|
}
|