package sys

Import Path
	github.com/tetratelabs/wazero/sys (on go.dev)

Dependency Relation
	imports 4 packages, and imported by 7 packages

Involved Source Files clock.go Package sys includes constants and types used by both public and internal APIs. stat.go stat_linux.go
Package-Level Type Names (total 9)
/* sort by: | */
ClockResolution is a positive granularity of clock precision in nanoseconds. For example, if the resolution is 1us, this returns 1000. Note: Some implementations return arbitrary resolution because there's no perfect alternative. For example, according to the source in time.go, windows monotonic resolution can be 15ms. See /RATIONALE.md. func github.com/tetratelabs/wazero/internal/sys.(*Context).NanotimeResolution() ClockResolution func github.com/tetratelabs/wazero/internal/sys.(*Context).WalltimeResolution() ClockResolution func github.com/tetratelabs/wazero.ModuleConfig.WithNanotime(Nanotime, ClockResolution) wazero.ModuleConfig func github.com/tetratelabs/wazero.ModuleConfig.WithWalltime(Walltime, 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) 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)
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.
Nanosleep puts the current goroutine to sleep for at least ns nanoseconds. func github.com/tetratelabs/wazero.ModuleConfig.WithNanosleep(Nanosleep) 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) var github.com/tetratelabs/wazero/internal/platform.FakeNanosleep
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)
Osyield yields the processor, typically to implement spin-wait loops. func github.com/tetratelabs/wazero.ModuleConfig.WithOsyield(Osyield) 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) var github.com/tetratelabs/wazero/internal/platform.FakeOsyield
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)
Walltime returns the current unix/epoch time, seconds since midnight UTC 1 January 1970, with a nanosecond fraction. func github.com/tetratelabs/wazero/internal/platform.NewFakeWalltime() Walltime func github.com/tetratelabs/wazero.ModuleConfig.WithWalltime(Walltime, 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)
Package-Level Functions (total 2)
func NewExitError(exitCode uint32) *ExitError
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.