From c6e08b059b416ddcbaa4f33d051e04736398047e Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 31 Oct 2021 12:30:10 +0000 Subject: [PATCH] Move `sys/wasi` to `sys/wasm/wasi` --- .../wasi.odin => wasm/wasi/wasi_api.odin} | 454 +++++++++--------- 1 file changed, 226 insertions(+), 228 deletions(-) rename core/sys/{wasi/wasi.odin => wasm/wasi/wasi_api.odin} (90%) diff --git a/core/sys/wasi/wasi.odin b/core/sys/wasm/wasi/wasi_api.odin similarity index 90% rename from core/sys/wasi/wasi.odin rename to core/sys/wasm/wasi/wasi_api.odin index fde7601a2..ed905f2a6 100644 --- a/core/sys/wasi/wasi.odin +++ b/core/sys/wasm/wasi/wasi_api.odin @@ -1,7 +1,7 @@ //+build wasm32 package sys_wasi -foreign import "env" +foreign import wasi "env" DIRCOOKIE_START :: u64(0) size_t :: uint @@ -971,7 +971,7 @@ prestat_t :: struct { } @(link_prefix="__wasi_") -foreign env { +foreign wasi { /** * Read command-line argument data. * The size of the array should match that returned by `args_sizes_get` @@ -1093,12 +1093,12 @@ foreign env { * Return a description of the given preopened file descriptor. */ fd_prestat_dir_name :: proc( - fd: fd_t, - /** - * A buffer into which to write the preopened directory name. - */ - path: [^]u8, - path_len: size_t, + fd: fd_t, + /** + * A buffer into which to write the preopened directory name. + */ + path: [^]u8, + path_len: size_t, ) -> errno_t --- /** * Atomically replace a file descriptor by renumbering another file descriptor. @@ -1111,11 +1111,11 @@ foreign env { * would disappear if `dup2()` were to be removed entirely. */ fd_renumber :: proc( - fd: fd_t, - /** - * The file descriptor to overwrite. - */ - to: fd_t, + fd: fd_t, + /** + * The file descriptor to overwrite. + */ + to: fd_t, ) -> errno_t --- /** * Synchronize the data and metadata of a file to disk. @@ -1129,61 +1129,61 @@ foreign env { * Note: This is similar to `mkdirat` in POSIX. */ path_create_directory :: proc( - fd: fd_t, - /** - * The path at which to create the directory. - */ - path: cstring, + fd: fd_t, + /** + * The path at which to create the directory. + */ + path: cstring, ) -> errno_t --- /** * Adjust the timestamps of a file or directory. * Note: This is similar to `utimensat` in POSIX. */ path_filestat_set_times :: proc( - fd: fd_t, - /** - * Flags determining the method of how the path is resolved. - */ - flags: lookupflags_t, - /** - * The path of the file or directory to operate on. - */ - path: cstring, - /** - * The desired values of the data access timestamp. - */ - atim: timestamp_t, - /** - * The desired values of the data modification timestamp. - */ - mtim: timestamp_t, - /** - * A bitmask indicating which timestamps to adjust. - */ - fst_flags: fstflags_t, + fd: fd_t, + /** + * Flags determining the method of how the path is resolved. + */ + flags: lookupflags_t, + /** + * The path of the file or directory to operate on. + */ + path: cstring, + /** + * The desired values of the data access timestamp. + */ + atim: timestamp_t, + /** + * The desired values of the data modification timestamp. + */ + mtim: timestamp_t, + /** + * A bitmask indicating which timestamps to adjust. + */ + fst_flags: fstflags_t, ) -> errno_t --- /** * Create a hard link. * Note: This is similar to `linkat` in POSIX. */ path_link :: proc( - old_fd: fd_t, - /** - * Flags determining the method of how the path is resolved. - */ - old_flags: lookupflags_t, - /** - * The source path from which to link. - */ - old_path: cstring, - /** - * The working directory at which the resolution of the new path starts. - */ - new_fd: fd_t, - /** - * The destination path at which to create the hard link. - */ - new_path: cstring, + old_fd: fd_t, + /** + * Flags determining the method of how the path is resolved. + */ + old_flags: lookupflags_t, + /** + * The source path from which to link. + */ + old_path: cstring, + /** + * The working directory at which the resolution of the new path starts. + */ + new_fd: fd_t, + /** + * The destination path at which to create the hard link. + */ + new_path: cstring, ) -> errno_t --- /** * Remove a directory. @@ -1191,45 +1191,45 @@ foreign env { * Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. */ path_remove_directory :: proc( - fd: fd_t, - /** - * The path to a directory to remove. - */ - path: cstring, + fd: fd_t, + /** + * The path to a directory to remove. + */ + path: cstring, ) -> errno_t --- /** * Rename a file or directory. * Note: This is similar to `renameat` in POSIX. */ path_rename :: proc( - fd: fd_t, - /** - * The source path of the file or directory to rename. - */ - old_path: cstring, - /** - * The working directory at which the resolution of the new path starts. - */ + fd: fd_t, + /** + * The source path of the file or directory to rename. + */ + old_path: cstring, + /** + * The working directory at which the resolution of the new path starts. + */ new_fd: fd_t, - /** - * The destination path to which to rename the file or directory. - */ - new_path: cstring, + /** + * The destination path to which to rename the file or directory. + */ + new_path: cstring, ) -> errno_t --- /** * Create a symbolic link. * Note: This is similar to `symlinkat` in POSIX. */ path_symlink :: proc( - /** - * The contents of the symbolic link. - */ - old_path: cstring, + /** + * The contents of the symbolic link. + */ + old_path: cstring, fd: fd_t, - /** - * The destination path at which to create the symbolic link. - */ - new_path: cstring, + /** + * The destination path at which to create the symbolic link. + */ + new_path: cstring, ) -> errno_t --- /** * Unlink a file. @@ -1238,10 +1238,10 @@ foreign env { */ path_unlink_file :: proc( fd: fd_t, - /** - * The path to a file to unlink. - */ - path: cstring, + /** + * The path to a file to unlink. + */ + path: cstring, ) -> errno_t --- /** * Terminate the process normally. An exit code of 0 indicates successful @@ -1249,20 +1249,20 @@ foreign env { * the environment. */ proc_exit :: proc( - /** - * The exit code returned by the process. - */ - rval: exitcode_t, + /** + * The exit code returned by the process. + */ + rval: exitcode_t, ) -> ! --- /** * Send a signal to the process of the calling thread. * Note: This is similar to `raise` in POSIX. */ proc_raise :: proc( - /** - * The signal condition to trigger. - */ - sig: signal_t, + /** + * The signal condition to trigger. + */ + sig: signal_t, ) -> errno_t --- /** * Temporarily yield execution of the calling thread. @@ -1278,11 +1278,11 @@ foreign env { * number generator, rather than to provide the random data directly. */ random_get :: proc( - /** - * The buffer to fill with random data. - */ - buf: [^]u8, - buf_len: size_t, + /** + * The buffer to fill with random data. + */ + buf: [^]u8, + buf_len: size_t, ) -> errno_t --- /** * Shut down socket send and receive channels. @@ -1290,135 +1290,10 @@ foreign env { */ sock_shutdown :: proc( fd: fd_t, - /** - * Which channels on the socket to shut down. - */ - how: sdflags_t, - ) -> errno_t --- -} - - -foreign env { - __wasi_args_sizes_get :: proc( - retptr0: ^size_t, - retptr1: ^size_t, - ) -> errno_t --- - __wasi_environ_sizes_get :: proc( - retptr0: ^size_t, - retptr1: ^size_t, - ) -> errno_t --- - __wasi_clock_res_get :: proc( - id: clockid_t, - retptr0: ^timestamp_t, - ) -> errno_t --- - __wasi_clock_time_get :: proc( - id: clockid_t, - precision: timestamp_t, - retptr0: ^timestamp_t, - ) -> errno_t --- - __wasi_fd_fdstat_get :: proc( - fd: fd_t, - retptr0: ^fdstat_t, - ) -> errno_t --- - __wasi_fd_filestat_get :: proc( - fd: fd_t, - retptr0: ^filestat_t, - ) -> errno_t --- - - - __wasi_fd_pread :: proc( - fd: fd_t, - iovs: [^]iovec_t, - iovs_len: size_t, - offset: filesize_t, - retptr0: ^size_t, - ) -> errno_t --- - __wasi_fd_prestat_get :: proc( - fd: fd_t, - retptr0: ^prestat_t, - ) -> errno_t --- - __wasi_fd_pwrite :: proc( - fd: fd_t, - iovs: [^]ciovec_t, - iovs_len: size_t, - offset: filesize_t, - retptr0: ^size_t, - ) -> errno_t --- - __wasi_fd_read :: proc( - fd: fd_t, - iovs: [^]iovec_t, - iovs_len: size_t, - retptr0: ^size_t, - ) -> errno_t --- - __wasi_fd_readdir :: proc( - fd: fd_t, - buf: [^]u8, - buf_len: size_t, - cookie: dircookie_t, - retptr0: ^size_t, - ) -> errno_t --- - __wasi_fd_seek :: proc( - fd: fd_t, - offset: filedelta_t, - whence: whence_t, - retptr0: ^filesize_t, - ) -> errno_t --- - __wasi_fd_tell :: proc( - fd: fd_t, - retptr0: ^filesize_t, - ) -> errno_t --- - __wasi_fd_write :: proc( - fd: fd_t, - iovs: [^]ciovec_t, - iovs_len: size_t, - retptr0: ^size_t, - ) -> errno_t --- - __wasi_path_filestat_get :: proc( - fd: fd_t, - flags: lookupflags_t, - /** - * The path of the file or directory to inspect. - */ - path: cstring, - retptr0: ^filestat_t, - ) -> errno_t --- - __wasi_path_open :: proc( - fd: fd_t, - dirflags: lookupflags_t, - path: cstring, - oflags: oflags_t, - fs_rights_base: rights_t, - fs_rights_inheriting: rights_t, - fdflags: fdflags_t, - retptr: ^fd_t, - ) -> errno_t --- - __wasi_path_readlink :: proc( - fd: fd_t, - path: cstring, - buf: [^]u8, - buf_len: size_t, - retptr0: ^size_t, - ) -> errno_t --- - __wasi_poll_oneoff :: proc( - subscription_in: ^subscription_t, - event_out: ^event_t, - nsubscriptions: size_t, - retptr0: ^size_t, - ) -> errno_t --- - __wasi_sock_recv :: proc( - fd: fd_t, - ri_data: [^]iovec_t, - ri_data_len: size_t, - ri_flags: riflags_t, - retptr0: ^size_t, - retptr1: ^roflags_t, - ) -> errno_t --- - __wasi_sock_send :: proc( - fd: fd_t, - si_data: [^]ciovec_t, - si_data_len: size_t, - si_flags: siflags_t, - retptr0: ^size_t, + /** + * Which channels on the socket to shut down. + */ + how: sdflags_t, ) -> errno_t --- } @@ -1816,4 +1691,127 @@ sock_send :: proc( ) -> (n: size_t, err: errno_t) { err = __wasi_sock_send(fd, si_data, si_data_len, si_flags, &n) return -} \ No newline at end of file +} + + +foreign wasi { + __wasi_args_sizes_get :: proc( + retptr0: ^size_t, + retptr1: ^size_t, + ) -> errno_t --- + __wasi_environ_sizes_get :: proc( + retptr0: ^size_t, + retptr1: ^size_t, + ) -> errno_t --- + __wasi_clock_res_get :: proc( + id: clockid_t, + retptr0: ^timestamp_t, + ) -> errno_t --- + __wasi_clock_time_get :: proc( + id: clockid_t, + precision: timestamp_t, + retptr0: ^timestamp_t, + ) -> errno_t --- + __wasi_fd_fdstat_get :: proc( + fd: fd_t, + retptr0: ^fdstat_t, + ) -> errno_t --- + __wasi_fd_filestat_get :: proc( + fd: fd_t, + retptr0: ^filestat_t, + ) -> errno_t --- + __wasi_fd_pread :: proc( + fd: fd_t, + iovs: [^]iovec_t, + iovs_len: size_t, + offset: filesize_t, + retptr0: ^size_t, + ) -> errno_t --- + __wasi_fd_prestat_get :: proc( + fd: fd_t, + retptr0: ^prestat_t, + ) -> errno_t --- + __wasi_fd_pwrite :: proc( + fd: fd_t, + iovs: [^]ciovec_t, + iovs_len: size_t, + offset: filesize_t, + retptr0: ^size_t, + ) -> errno_t --- + __wasi_fd_read :: proc( + fd: fd_t, + iovs: [^]iovec_t, + iovs_len: size_t, + retptr0: ^size_t, + ) -> errno_t --- + __wasi_fd_readdir :: proc( + fd: fd_t, + buf: [^]u8, + buf_len: size_t, + cookie: dircookie_t, + retptr0: ^size_t, + ) -> errno_t --- + __wasi_fd_seek :: proc( + fd: fd_t, + offset: filedelta_t, + whence: whence_t, + retptr0: ^filesize_t, + ) -> errno_t --- + __wasi_fd_tell :: proc( + fd: fd_t, + retptr0: ^filesize_t, + ) -> errno_t --- + __wasi_fd_write :: proc( + fd: fd_t, + iovs: [^]ciovec_t, + iovs_len: size_t, + retptr0: ^size_t, + ) -> errno_t --- + __wasi_path_filestat_get :: proc( + fd: fd_t, + flags: lookupflags_t, + /** + * The path of the file or directory to inspect. + */ + path: cstring, + retptr0: ^filestat_t, + ) -> errno_t --- + __wasi_path_open :: proc( + fd: fd_t, + dirflags: lookupflags_t, + path: cstring, + oflags: oflags_t, + fs_rights_base: rights_t, + fs_rights_inheriting: rights_t, + fdflags: fdflags_t, + retptr: ^fd_t, + ) -> errno_t --- + __wasi_path_readlink :: proc( + fd: fd_t, + path: cstring, + buf: [^]u8, + buf_len: size_t, + retptr0: ^size_t, + ) -> errno_t --- + __wasi_poll_oneoff :: proc( + subscription_in: ^subscription_t, + event_out: ^event_t, + nsubscriptions: size_t, + retptr0: ^size_t, + ) -> errno_t --- + __wasi_sock_recv :: proc( + fd: fd_t, + ri_data: [^]iovec_t, + ri_data_len: size_t, + ri_flags: riflags_t, + retptr0: ^size_t, + retptr1: ^roflags_t, + ) -> errno_t --- + __wasi_sock_send :: proc( + fd: fd_t, + si_data: [^]ciovec_t, + si_data_len: size_t, + si_flags: siflags_t, + retptr0: ^size_t, + ) -> errno_t --- +}