Move sys/wasi to sys/wasm/wasi

This commit is contained in:
gingerBill
2021-10-31 12:30:10 +00:00
parent 9a5216921c
commit c6e08b059b
@@ -1,7 +1,7 @@
//+build wasm32 //+build wasm32
package sys_wasi package sys_wasi
foreign import "env" foreign import wasi "env"
DIRCOOKIE_START :: u64(0) DIRCOOKIE_START :: u64(0)
size_t :: uint size_t :: uint
@@ -971,7 +971,7 @@ prestat_t :: struct {
} }
@(link_prefix="__wasi_") @(link_prefix="__wasi_")
foreign env { foreign wasi {
/** /**
* Read command-line argument data. * Read command-line argument data.
* The size of the array should match that returned by `args_sizes_get` * 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. * Return a description of the given preopened file descriptor.
*/ */
fd_prestat_dir_name :: proc( fd_prestat_dir_name :: proc(
fd: fd_t, fd: fd_t,
/** /**
* A buffer into which to write the preopened directory name. * A buffer into which to write the preopened directory name.
*/ */
path: [^]u8, path: [^]u8,
path_len: size_t, path_len: size_t,
) -> errno_t --- ) -> errno_t ---
/** /**
* Atomically replace a file descriptor by renumbering another file descriptor. * 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. * would disappear if `dup2()` were to be removed entirely.
*/ */
fd_renumber :: proc( fd_renumber :: proc(
fd: fd_t, fd: fd_t,
/** /**
* The file descriptor to overwrite. * The file descriptor to overwrite.
*/ */
to: fd_t, to: fd_t,
) -> errno_t --- ) -> errno_t ---
/** /**
* Synchronize the data and metadata of a file to disk. * Synchronize the data and metadata of a file to disk.
@@ -1129,61 +1129,61 @@ foreign env {
* Note: This is similar to `mkdirat` in POSIX. * Note: This is similar to `mkdirat` in POSIX.
*/ */
path_create_directory :: proc( path_create_directory :: proc(
fd: fd_t, fd: fd_t,
/** /**
* The path at which to create the directory. * The path at which to create the directory.
*/ */
path: cstring, path: cstring,
) -> errno_t --- ) -> errno_t ---
/** /**
* Adjust the timestamps of a file or directory. * Adjust the timestamps of a file or directory.
* Note: This is similar to `utimensat` in POSIX. * Note: This is similar to `utimensat` in POSIX.
*/ */
path_filestat_set_times :: proc( path_filestat_set_times :: proc(
fd: fd_t, fd: fd_t,
/** /**
* Flags determining the method of how the path is resolved. * Flags determining the method of how the path is resolved.
*/ */
flags: lookupflags_t, flags: lookupflags_t,
/** /**
* The path of the file or directory to operate on. * The path of the file or directory to operate on.
*/ */
path: cstring, path: cstring,
/** /**
* The desired values of the data access timestamp. * The desired values of the data access timestamp.
*/ */
atim: timestamp_t, atim: timestamp_t,
/** /**
* The desired values of the data modification timestamp. * The desired values of the data modification timestamp.
*/ */
mtim: timestamp_t, mtim: timestamp_t,
/** /**
* A bitmask indicating which timestamps to adjust. * A bitmask indicating which timestamps to adjust.
*/ */
fst_flags: fstflags_t, fst_flags: fstflags_t,
) -> errno_t --- ) -> errno_t ---
/** /**
* Create a hard link. * Create a hard link.
* Note: This is similar to `linkat` in POSIX. * Note: This is similar to `linkat` in POSIX.
*/ */
path_link :: proc( path_link :: proc(
old_fd: fd_t, old_fd: fd_t,
/** /**
* Flags determining the method of how the path is resolved. * Flags determining the method of how the path is resolved.
*/ */
old_flags: lookupflags_t, old_flags: lookupflags_t,
/** /**
* The source path from which to link. * The source path from which to link.
*/ */
old_path: cstring, old_path: cstring,
/** /**
* The working directory at which the resolution of the new path starts. * The working directory at which the resolution of the new path starts.
*/ */
new_fd: fd_t, new_fd: fd_t,
/** /**
* The destination path at which to create the hard link. * The destination path at which to create the hard link.
*/ */
new_path: cstring, new_path: cstring,
) -> errno_t --- ) -> errno_t ---
/** /**
* Remove a directory. * Remove a directory.
@@ -1191,45 +1191,45 @@ foreign env {
* Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. * Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX.
*/ */
path_remove_directory :: proc( path_remove_directory :: proc(
fd: fd_t, fd: fd_t,
/** /**
* The path to a directory to remove. * The path to a directory to remove.
*/ */
path: cstring, path: cstring,
) -> errno_t --- ) -> errno_t ---
/** /**
* Rename a file or directory. * Rename a file or directory.
* Note: This is similar to `renameat` in POSIX. * Note: This is similar to `renameat` in POSIX.
*/ */
path_rename :: proc( path_rename :: proc(
fd: fd_t, fd: fd_t,
/** /**
* The source path of the file or directory to rename. * The source path of the file or directory to rename.
*/ */
old_path: cstring, old_path: cstring,
/** /**
* The working directory at which the resolution of the new path starts. * The working directory at which the resolution of the new path starts.
*/ */
new_fd: fd_t, new_fd: fd_t,
/** /**
* The destination path to which to rename the file or directory. * The destination path to which to rename the file or directory.
*/ */
new_path: cstring, new_path: cstring,
) -> errno_t --- ) -> errno_t ---
/** /**
* Create a symbolic link. * Create a symbolic link.
* Note: This is similar to `symlinkat` in POSIX. * Note: This is similar to `symlinkat` in POSIX.
*/ */
path_symlink :: proc( path_symlink :: proc(
/** /**
* The contents of the symbolic link. * The contents of the symbolic link.
*/ */
old_path: cstring, old_path: cstring,
fd: fd_t, fd: fd_t,
/** /**
* The destination path at which to create the symbolic link. * The destination path at which to create the symbolic link.
*/ */
new_path: cstring, new_path: cstring,
) -> errno_t --- ) -> errno_t ---
/** /**
* Unlink a file. * Unlink a file.
@@ -1238,10 +1238,10 @@ foreign env {
*/ */
path_unlink_file :: proc( path_unlink_file :: proc(
fd: fd_t, fd: fd_t,
/** /**
* The path to a file to unlink. * The path to a file to unlink.
*/ */
path: cstring, path: cstring,
) -> errno_t --- ) -> errno_t ---
/** /**
* Terminate the process normally. An exit code of 0 indicates successful * Terminate the process normally. An exit code of 0 indicates successful
@@ -1249,20 +1249,20 @@ foreign env {
* the environment. * the environment.
*/ */
proc_exit :: proc( proc_exit :: proc(
/** /**
* The exit code returned by the process. * The exit code returned by the process.
*/ */
rval: exitcode_t, rval: exitcode_t,
) -> ! --- ) -> ! ---
/** /**
* Send a signal to the process of the calling thread. * Send a signal to the process of the calling thread.
* Note: This is similar to `raise` in POSIX. * Note: This is similar to `raise` in POSIX.
*/ */
proc_raise :: proc( proc_raise :: proc(
/** /**
* The signal condition to trigger. * The signal condition to trigger.
*/ */
sig: signal_t, sig: signal_t,
) -> errno_t --- ) -> errno_t ---
/** /**
* Temporarily yield execution of the calling thread. * Temporarily yield execution of the calling thread.
@@ -1278,11 +1278,11 @@ foreign env {
* number generator, rather than to provide the random data directly. * number generator, rather than to provide the random data directly.
*/ */
random_get :: proc( random_get :: proc(
/** /**
* The buffer to fill with random data. * The buffer to fill with random data.
*/ */
buf: [^]u8, buf: [^]u8,
buf_len: size_t, buf_len: size_t,
) -> errno_t --- ) -> errno_t ---
/** /**
* Shut down socket send and receive channels. * Shut down socket send and receive channels.
@@ -1290,135 +1290,10 @@ foreign env {
*/ */
sock_shutdown :: proc( sock_shutdown :: proc(
fd: fd_t, fd: fd_t,
/** /**
* Which channels on the socket to shut down. * Which channels on the socket to shut down.
*/ */
how: sdflags_t, 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,
) -> errno_t --- ) -> errno_t ---
} }
@@ -1817,3 +1692,126 @@ sock_send :: proc(
err = __wasi_sock_send(fd, si_data, si_data_len, si_flags, &n) err = __wasi_sock_send(fd, si_data, si_data_len, si_flags, &n)
return return
} }
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 ---
}