mirror of
https://github.com/denoland/deno.git
synced 2024-12-27 01:29:14 -05:00
9adbca6d19
This marks sched_yield as implemented, it is a no-op but will probably always be and we have passing tests for it.
88 lines
1.8 KiB
Markdown
88 lines
1.8 KiB
Markdown
# wasi
|
|
|
|
This module provides an implementation of the WebAssembly System Interface.
|
|
|
|
## Supported Syscalls
|
|
|
|
### wasi_snapshot_preview1
|
|
|
|
- [x] args_get
|
|
- [x] args_sizes_get
|
|
- [x] environ_get
|
|
- [x] environ_sizes_get
|
|
- [x] clock_res_get
|
|
- [x] clock_time_get
|
|
- [ ] fd_advise
|
|
- [ ] fd_allocate
|
|
- [x] fd_close
|
|
- [x] fd_datasync
|
|
- [x] fd_fdstat_get
|
|
- [ ] fd_fdstat_set_flags
|
|
- [ ] fd_fdstat_set_rights
|
|
- [x] fd_filestat_get
|
|
- [x] fd_filestat_set_size
|
|
- [x] fd_filestat_set_times
|
|
- [x] fd_pread
|
|
- [x] fd_prestat_get
|
|
- [x] fd_prestat_dir_name
|
|
- [x] fd_pwrite
|
|
- [x] fd_read
|
|
- [x] fd_readdir
|
|
- [x] fd_renumber
|
|
- [x] fd_seek
|
|
- [x] fd_sync
|
|
- [x] fd_tell
|
|
- [x] fd_write
|
|
- [x] path_create_directory
|
|
- [x] path_filestat_get
|
|
- [x] path_filestat_set_times
|
|
- [x] path_link
|
|
- [x] path_open
|
|
- [x] path_readlink
|
|
- [x] path_remove_directory
|
|
- [x] path_rename
|
|
- [x] path_symlink
|
|
- [x] path_unlink_file
|
|
- [x] poll_oneoff
|
|
- [x] proc_exit
|
|
- [ ] proc_raise
|
|
- [x] sched_yield
|
|
- [x] random_get
|
|
- [ ] sock_recv
|
|
- [ ] sock_send
|
|
- [ ] sock_shutdown
|
|
|
|
## Usage
|
|
|
|
```typescript
|
|
import Context from "https://deno.land/std@$STD_VERSION/wasi/snapshot_preview1.ts";
|
|
|
|
const context = new Context({
|
|
args: Deno.args,
|
|
env: Deno.env.toObject(),
|
|
});
|
|
|
|
const binary = await Deno.readFile("path/to/your/module.wasm");
|
|
const module = await WebAssembly.compile(binary);
|
|
const instance = await WebAssembly.instantiate(module, {
|
|
"wasi_snapshot_preview1": context.exports,
|
|
});
|
|
|
|
const {
|
|
_start: start,
|
|
_initialize: initialize,
|
|
memory,
|
|
} = instance.exports;
|
|
|
|
context.memory = memory as WebAssembly.Memory;
|
|
|
|
if (start instanceof Function) {
|
|
start();
|
|
} else if (initialize instanceof Function) {
|
|
initialize();
|
|
} else {
|
|
throw new Error(
|
|
"No '_start' or '_initialize' entry point found in WebAssembly module, make sure to compile with wasm32-wasi as the target.",
|
|
);
|
|
}
|
|
```
|