Skip to content

Commit 71f6a9e

Browse files
committed
add more wasi abis
1 parent 2e96099 commit 71f6a9e

File tree

5 files changed

+427
-17
lines changed

5 files changed

+427
-17
lines changed

include/proxy-wasm/exports.h

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,31 @@ Word wasi_unstable_sched_yield();
153153
Word wasi_unstable_poll_oneoff(Word in, Word out, Word nsubscriptions, Word nevents);
154154
void wasi_unstable_proc_exit(Word);
155155
Word wasi_unstable_clock_time_get(Word, uint64_t, Word);
156+
Word wasi_unstable_clock_res_get(Word, Word);
157+
Word wasi_unstable_fd_advise(Word, uint64_t, uint64_t, Word);
158+
Word wasi_unstable_fd_allocate(Word, uint64_t, uint64_t);
159+
Word wasi_unstable_fd_datasync(Word);
160+
Word wasi_unstable_fd_fdstat_set_rights(Word, uint64_t, uint64_t);
161+
Word wasi_unstable_fd_filestat_set_size(Word, uint64_t);
162+
Word wasi_unstable_fd_filestat_set_times(Word, uint64_t, uint64_t, Word);
163+
Word wasi_unstable_fd_pread(Word, Word, Word, uint64_t, Word);
164+
Word wasi_unstable_fd_pwrite(Word, Word, Word, uint64_t, Word);
165+
Word wasi_unstable_fd_readdir(Word, Word, Word, uint64_t, Word);
166+
Word wasi_unstable_fd_renumber(Word, Word);
167+
Word wasi_unstable_fd_sync(Word);
168+
Word wasi_unstable_fd_tell(Word, Word);
169+
Word wasi_unstable_path_create_directory(Word, Word, Word);
170+
Word wasi_unstable_path_filestat_set_times(Word, Word, Word, Word, uint64_t, uint64_t, Word);
171+
Word wasi_unstable_path_link(Word, Word, Word, Word, Word, Word);
172+
Word wasi_unstable_path_readlink(Word, Word, Word, Word, Word, Word);
173+
Word wasi_unstable_path_remove_directory(Word, Word, Word);
174+
Word wasi_unstable_path_rename(Word, Word, Word, Word, Word);
175+
Word wasi_unstable_path_symlink(Word, Word, Word, Word);
176+
Word wasi_unstable_path_unlink_file(Word, Word, Word);
177+
Word wasi_unstable_sock_accept(Word, Word, Word);
178+
Word wasi_unstable_sock_recv(Word, Word, Word, Word, Word, Word);
179+
Word wasi_unstable_sock_send(Word, Word, Word, Word, Word);
180+
Word wasi_unstable_sock_shutdown(Word, Word);
156181
Word wasi_unstable_random_get(Word, Word);
157182
Word pthread_equal(Word left, Word right);
158183
void emscripten_notify_memory_growth(Word);
@@ -181,9 +206,15 @@ Word wasi_unstable_path_filestat_get(Word fd, Word flags, Word path, Word path_l
181206

182207
#define FOR_ALL_WASI_FUNCTIONS(_f) \
183208
_f(fd_write) _f(fd_read) _f(fd_seek) _f(fd_close) _f(fd_fdstat_get) _f(fd_fdstat_set_flags) \
184-
_f(environ_get) _f(environ_sizes_get) _f(args_get) _f(args_sizes_get) _f(clock_time_get) \
185-
_f(random_get) _f(sched_yield) _f(poll_oneoff) _f(proc_exit) _f(path_open) \
186-
_f(fd_prestat_get) _f(fd_prestat_dir_name) _f(path_filestat_get) _f(fd_filestat_get)
209+
_f(fd_fdstat_set_rights) _f(environ_get) _f(environ_sizes_get) _f(args_get) _f(args_sizes_get) \
210+
_f(clock_time_get) _f(clock_res_get) _f(fd_advise) _f(fd_allocate) _f(fd_datasync) \
211+
_f(fd_filestat_set_size) _f(fd_filestat_set_times) _f(fd_pread) _f(fd_pwrite) \
212+
_f(fd_readdir) _f(fd_renumber) _f(fd_sync) _f(fd_tell) _f(path_create_directory) \
213+
_f(path_filestat_set_times) _f(path_link) _f(path_readlink) _f(path_remove_directory) \
214+
_f(path_rename) _f(path_symlink) _f(path_unlink_file) _f(sock_accept) \
215+
_f(sock_recv) _f(sock_send) _f(sock_shutdown) _f(random_get) _f(sched_yield) \
216+
_f(poll_oneoff) _f(proc_exit) _f(path_open) _f(fd_prestat_get) \
217+
_f(fd_prestat_dir_name) _f(path_filestat_get) _f(fd_filestat_get)
187218

188219
// Helpers to generate a stub to pass to VM, in place of a restricted proxy-wasm capability.
189220
#define _CREATE_PROXY_WASM_STUB(_fn) \

include/proxy-wasm/wasm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ inline void *WasmBase::allocMemory(uint64_t size, uint64_t *address) {
466466
// // time
467467
// "wasi_unstable.clock_time_get", "wasi_snapshot_preview1.clock_time_get",
468468
// // go runtime gc sleep
469-
// "wasi_unstable.poll_oneoff"});
469+
// "wasi_unstable.poll_oneoff", "wasi_snapshot_preview1.poll_oneoff"});
470470
Word a = malloc_(vm_context(), size);
471471
// wasm_vm_->setRestrictedCallback(false);
472472
if (!a.u64_) {

include/proxy-wasm/wasm_vm.h

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -114,23 +114,31 @@ using WasmCallback_WWmW = Word (*)(Word, uint64_t, Word);
114114
using WasmCallback_WWWWWWllWW = Word (*)(Word, Word, Word, Word, Word, int64_t, int64_t, Word,
115115
Word);
116116
using WasmCallback_dd = double (*)(double);
117+
// Additional callback types for new WASI functions
118+
using WasmCallback_WWWWmm = Word (*)(Word, Word, Word, Word, uint64_t, uint64_t);
119+
using WasmCallback_WWWWmmW = Word (*)(Word, Word, Word, Word, uint64_t, uint64_t, Word);
120+
using WasmCallback_WWmm = Word (*)(Word, uint64_t, uint64_t);
121+
using WasmCallback_WWmmW = Word (*)(Word, uint64_t, uint64_t, Word);
122+
using WasmCallback_WWWWmW = Word (*)(Word, Word, Word, uint64_t, Word);
117123

118124
#define FOR_ALL_WASM_VM_IMPORTS(_f) \
119125
_f(proxy_wasm::WasmCallbackVoid<0>) _f(proxy_wasm::WasmCallbackVoid<1>) \
120126
_f(proxy_wasm::WasmCallbackVoid<2>) _f(proxy_wasm::WasmCallbackVoid<3>) \
121127
_f(proxy_wasm::WasmCallbackVoid<4>) _f(proxy_wasm::WasmCallbackWord<0>) \
122128
_f(proxy_wasm::WasmCallbackWord<1>) _f(proxy_wasm::WasmCallbackWord<2>) \
123-
_f(proxy_wasm::WasmCallbackWord<3>) _f(proxy_wasm::WasmCallbackWord<4>) \
124-
_f(proxy_wasm::WasmCallbackWord<5>) _f(proxy_wasm::WasmCallbackWord<6>) \
125-
_f(proxy_wasm::WasmCallbackWord<7>) _f(proxy_wasm::WasmCallbackWord<8>) \
126-
_f(proxy_wasm::WasmCallbackWord<9>) \
127-
_f(proxy_wasm::WasmCallbackWord<10>) \
128-
_f(proxy_wasm::WasmCallbackWord<12>) \
129-
_f(proxy_wasm::WasmCallback_WWl) \
130-
_f(proxy_wasm::WasmCallback_WWlWW) \
131-
_f(proxy_wasm::WasmCallback_WWm) \
132-
_f(proxy_wasm::WasmCallback_WWmW) \
133-
_f(proxy_wasm::WasmCallback_WWWWWWllWW) \
129+
_f(proxy_wasm::WasmCallbackWord<3>) _f(proxy_wasm::WasmCallbackWord<4>) _f( \
130+
proxy_wasm::WasmCallbackWord<5>) _f(proxy_wasm::WasmCallbackWord<6>) \
131+
_f(proxy_wasm::WasmCallbackWord<7>) _f(proxy_wasm::WasmCallbackWord<8>) _f( \
132+
proxy_wasm::WasmCallbackWord<9>) _f(proxy_wasm::WasmCallbackWord<10>) \
133+
_f(proxy_wasm::WasmCallbackWord<12>) _f(proxy_wasm::WasmCallback_WWl) \
134+
_f(proxy_wasm::WasmCallback_WWlWW) _f(proxy_wasm::WasmCallback_WWm) \
135+
_f(proxy_wasm::WasmCallback_WWmW) \
136+
_f(proxy_wasm::WasmCallback_WWWWWWllWW) \
137+
_f(proxy_wasm::WasmCallback_WWWWmm) \
138+
_f(proxy_wasm::WasmCallback_WWWWmmW) \
139+
_f(proxy_wasm::WasmCallback_WWmm) \
140+
_f(proxy_wasm::WasmCallback_WWmmW) \
141+
_f(proxy_wasm::WasmCallback_WWWWmW) \
134142
_f(proxy_wasm::WasmCallback_dd)
135143

136144
enum class Cloneable {

0 commit comments

Comments
 (0)