EpochNanos is a timestamp in epoch nanoseconds, or zero if unknown.
This defines epoch time the same way as Walltime, except this value is
packed into an int64. Common conversions are detailed in the examples.
ExitError is returned to a caller of api.Function when api.Module CloseWithExitCode was invoked,
or context.Context passed to api.Function Call was canceled or reached the Timeout.
ExitCode zero value means success while any other value is an error.
Here's an example of how to get the exit code:
main := module.ExportedFunction("main")
if err := main(ctx); err != nil {
if exitErr, ok := err.(*sys.ExitError); ok {
// This means your module exited with non-zero code!
}
--snip--
Note: While possible the reason of this was "proc_exit" from "wasi_snapshot_preview1", it could be from other host
functions, for example an AssemblyScript's abort handler, or any arbitrary caller of CloseWithExitCode.
See https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md#proc_exit and
https://www.assemblyscript.org/concepts.html#special-imports
Note: In the case of context cancellation or timeout, the api.Module from which the api.Function created is closed. Error implements the error interface. ExitCode returns zero on success, and an arbitrary value otherwise. Is allows use via errors.Is
*ExitError : error
func NewExitError(exitCode uint32) *ExitError
Inode is the file serial number, or zero if unknown.
Any constant value will invalidate functions that use this for
equivalence, such as os.SameFile (Stat_t.Ino).
When zero is returned by a `readdir`, some compilers will attempt to
get a non-zero value with `lstat`. Those using this for darwin's definition
of `getdirentries` conflate zero `d_fileno` with a deleted file, so skip the
entry. See /RATIONALE.md for more on this.
Nanotime returns nanoseconds since an arbitrary start point, used to measure
elapsed time. This is sometimes referred to as a tick or monotonic time.
Note: There are no constraints on the value return except that it
increments. For example, -1 is a valid if the next value is >= 0.
func github.com/tetratelabs/wazero/internal/platform.NewFakeNanotime() Nanotime
func github.com/tetratelabs/wazero.ModuleConfig.WithNanotime(Nanotime, ClockResolution) wazero.ModuleConfig
func github.com/tetratelabs/wazero/internal/sys.NewContext(max uint32, args, environ [][]byte, stdin io.Reader, stdout, stderr io.Writer, randSource io.Reader, walltime Walltime, walltimeResolution ClockResolution, nanotime Nanotime, nanotimeResolution ClockResolution, nanosleep Nanosleep, osyield Osyield, fs []experimentalsys.FS, guestPaths []string, tcpListeners []*net.TCPListener) (sysCtx *sys.Context, err error)
Stat_t is similar to syscall.Stat_t, except available on all operating
systems, including Windows.
# Notes
- This is used for WebAssembly ABI emulating the POSIX `stat` system call.
See https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html
- Fields here are required for WebAssembly ABI including wasip1
(a.k.a. wasix) and wasi-filesystem (a.k.a. wasip2).
- This isn't the same as syscall.Stat_t because wazero supports Windows,
which doesn't have that type. runtime.GOOS that has this already also
have inconsistent field lengths, which complicates wasm binding.
- Use NewStat_t to create this from an existing fs.FileInfo.
- For portability, numeric fields are 64-bit when at least one platform
defines it that large. Atim is the last data access timestamp in epoch nanoseconds. Ctim is the last file status change timestamp in epoch nanoseconds. Dev is the device ID of device containing the file. Ino is the file serial number, or zero if not available. See Inode for
more details including impact returning a zero value. Mode is the same as Mode on fs.FileInfo containing bits to identify the
type of the file (fs.ModeType) and its permissions (fs.ModePerm). Mtim is the last data modification timestamp in epoch nanoseconds. Nlink is the number of hard links to the file.
Note: This value is platform-specific and often at least one. Linux will
return 1+N for a directory, where BSD (like Darwin) return 2+N, which
includes the dot entry. Size is the length in bytes for regular files. For symbolic links, this
is length in bytes of the pathname contained in the symbolic link.
func NewStat_t(info fs.FileInfo) Stat_t
func github.com/tetratelabs/wazero/experimental/sys.File.Stat() (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/experimental/sys.FS.Lstat(path string) (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/experimental/sys.FS.Stat(path string) (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/experimental/sys.UnimplementedFile.Stat() (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/experimental/sys.UnimplementedFS.Lstat(path string) (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/experimental/sys.UnimplementedFS.Stat(path string) (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/internal/fsapi.File.Stat() (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/internal/sock.TCPConn.Stat() (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/internal/sock.TCPSock.Stat() (Stat_t, sys.Errno)
func github.com/tetratelabs/wazero/internal/sysfs.(*AdaptFS).Lstat(path string) (Stat_t, experimentalsys.Errno)
func github.com/tetratelabs/wazero/internal/sysfs.(*AdaptFS).Stat(path string) (Stat_t, experimentalsys.Errno)
NewStat_t fills a new Stat_t from `info`, including any runtime.GOOS-specific
details from fs.FileInfo `Sys`. When `Sys` is already a *Stat_t, it is
returned as-is.
# Notes
- When already in fs.FileInfo `Sys`, Stat_t must be a pointer.
- When runtime.GOOS is "windows" Stat_t.Ino will be zero.
- When fs.FileInfo `Sys` is nil or unknown, some fields not in fs.FileInfo
are defaulted: Stat_t.Atim and Stat_t.Ctim are set to `ModTime`, and
are set to ModTime and Stat_t.Nlink is set to 1.
Package-Level Constants (total 2)
ExitCodeContextCanceled corresponds to context.Canceled and returned by ExitError.ExitCode in that case.
ExitCodeDeadlineExceeded corresponds to context.DeadlineExceeded and returned by ExitError.ExitCode in that case.
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.