Browse Source

Move `sys/wasi` to `sys/wasm/wasi`

gingerBill 3 years ago
parent
commit
c6e08b059b
1 changed files with 226 additions and 228 deletions
  1. 226 228
      core/sys/wasm/wasi/wasi_api.odin

+ 226 - 228
core/sys/wasi/wasi.odin → 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
-}
+}
+
+
+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 ---
+}