package sys
import "github.com/tetratelabs/wazero/internal/sys"
Index ¶
- Constants
- Variables
- type Context
- func DefaultContext(fs fs.FS) *Context
- func NewContext( max uint32, args, environ [][]byte, stdin io.Reader, stdout, stderr io.Writer, randSource io.Reader, walltime *sys.Walltime, walltimeResolution sys.ClockResolution, nanotime *sys.Nanotime, nanotimeResolution sys.ClockResolution, nanosleep *sys.Nanosleep, fs fs.FS, ) (sysCtx *Context, err error)
- func (c *Context) Args() [][]byte
- func (c *Context) ArgsSize() uint32
- func (c *Context) Environ() [][]byte
- func (c *Context) EnvironSize() uint32
- func (c *Context) FS() *FSContext
- func (c *Context) Nanosleep(ns int64)
- func (c *Context) Nanotime() int64
- func (c *Context) NanotimeResolution() sys.ClockResolution
- func (c *Context) RandSource() io.Reader
- func (c *Context) Walltime() (sec int64, nsec int32)
- func (c *Context) WalltimeResolution() sys.ClockResolution
- type FSContext
- func NewFSContext(stdin io.Reader, stdout, stderr io.Writer, root fs.FS) (fsc *FSContext, err error)
- func (c *FSContext) Close(context.Context) (err error)
- func (c *FSContext) CloseFile(fd uint32) bool
- func (c *FSContext) FdReader(fd uint32) io.Reader
- func (c *FSContext) FdWriter(fd uint32) io.Writer
- func (c *FSContext) OpenFile(name string) (uint32, error)
- func (c *FSContext) OpenedFile(fd uint32) (*FileEntry, bool)
- func (c *FSContext) StatFile(name string) (fs.FileInfo, error)
- type FileEntry
- type ReadDir
Constants ¶
const ( FdStdin uint32 = iota FdStdout FdStderr // FdRoot is the file descriptor of the root ("/") filesystem. // // # Why file descriptor 3? // // While not specified, the most common WASI implementation, wasi-libc, expects // POSIX style file descriptor allocation, where the lowest available number is // used to open the next file. Since 1 and 2 are taken by stdout and stderr, // `root` is assigned 3. // - https://github.com/WebAssembly/WASI/issues/122 // - https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_14 // - https://github.com/WebAssembly/wasi-libc/blob/wasi-sdk-16/libc-bottom-half/sources/preopens.c#L215 FdRoot )
Variables ¶
var EmptyFS = &emptyFS{}
EmptyFS is exported to special-case an empty file system.
Types ¶
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
Context holds module-scoped system resources currently only supported by built-in host functions.
func DefaultContext ¶
DefaultContext returns Context with no values set except a possibly nil fs.FS
func NewContext ¶
func NewContext( max uint32, args, environ [][]byte, stdin io.Reader, stdout, stderr io.Writer, randSource io.Reader, walltime *sys.Walltime, walltimeResolution sys.ClockResolution, nanotime *sys.Nanotime, nanotimeResolution sys.ClockResolution, nanosleep *sys.Nanosleep, fs fs.FS, ) (sysCtx *Context, err error)
NewContext is a factory function which helps avoid needing to know defaults or exporting all fields. Note: max is exposed for testing. max is only used for env/args validation.
func (*Context) Args ¶
Args is like os.Args and defaults to nil.
Note: The count will never be more than math.MaxUint32. See wazero.ModuleConfig WithArgs
func (*Context) ArgsSize ¶
ArgsSize is the size to encode Args as Null-terminated strings.
Note: To get the size without null-terminators, subtract the length of Args from this value. See wazero.ModuleConfig WithArgs See https://en.wikipedia.org/wiki/Null-terminated_string
func (*Context) Environ ¶
Environ are "key=value" entries like os.Environ and default to nil.
Note: The count will never be more than math.MaxUint32. See wazero.ModuleConfig WithEnv
func (*Context) EnvironSize ¶
EnvironSize is the size to encode Environ as Null-terminated strings.
Note: To get the size without null-terminators, subtract the length of Environ from this value. See wazero.ModuleConfig WithEnv See https://en.wikipedia.org/wiki/Null-terminated_string
func (*Context) FS ¶
FS returns the possibly empty (EmptyFS) file system context.
func (*Context) Nanosleep ¶
Nanosleep implements sys.Nanosleep.
func (*Context) Nanotime ¶
Nanotime implements sys.Nanotime.
func (*Context) NanotimeResolution ¶
func (c *Context) NanotimeResolution() sys.ClockResolution
NanotimeResolution returns resolution of Nanotime.
func (*Context) RandSource ¶
RandSource is a source of random bytes and defaults to a deterministic source. see wazero.ModuleConfig WithRandSource
func (*Context) Walltime ¶
Walltime implements sys.Walltime.
func (*Context) WalltimeResolution ¶
func (c *Context) WalltimeResolution() sys.ClockResolution
WalltimeResolution returns resolution of Walltime.
type FSContext ¶
type FSContext struct {
// contains filtered or unexported fields
}
func NewFSContext ¶
func NewFSContext(stdin io.Reader, stdout, stderr io.Writer, root fs.FS) (fsc *FSContext, err error)
NewFSContext creates a FSContext, using the `root` parameter for any paths beginning at "/". If the input is EmptyFS, there is no root filesystem. Otherwise, `root` is assigned file descriptor FdRoot and the returned context can open files in that file system. Any error on opening "." is returned.
func (*FSContext) Close ¶
Close implements api.Closer
func (*FSContext) CloseFile ¶
CloseFile returns true if a file was opened and closed without error, or false if syscall.EBADF.
func (*FSContext) FdReader ¶
FdReader returns a valid reader for the given file descriptor or nil if syscall.EBADF.
func (*FSContext) FdWriter ¶
FdWriter returns a valid writer for the given file descriptor or nil if syscall.EBADF.
func (*FSContext) OpenFile ¶
OpenFile is like syscall.Open and returns the file descriptor of the new file or an error.
TODO: Consider dirflags and oflags. Also, allow non-read-only open based on config about the mount. e.g. allow os.O_RDONLY, os.O_WRONLY, or os.O_RDWR either by config flag or pattern on filename See #390
func (*FSContext) OpenedFile ¶
OpenedFile returns a file and true if it was opened or nil and false, if syscall.EBADF.
func (*FSContext) StatFile ¶
type FileEntry ¶
type FileEntry struct { // Name is the basename of the file, at the time it was opened. When the // file is root "/" (fd = FdRoot), this is "/". // // Note: This must match fs.FileInfo. Name string // File is always non-nil, even when root "/" (fd = FdRoot). File fs.File // ReadDir is present when this File is a fs.ReadDirFile and `ReadDir` // was called. ReadDir *ReadDir }
FileEntry maps a path to an open file in a file system.
type ReadDir ¶
type ReadDir struct { // CountRead is the total count of files read including Entries. CountRead uint64 // Entries is the contents of the last fs.ReadDirFile call. Notably, // directory listing are not rewindable, so we keep entries around in case // the caller mis-estimated their buffer and needs a few still cached. Entries []fs.DirEntry }
ReadDir is the status of a prior fs.ReadDirFile call.
Source Files ¶
- Version
- v1.0.0-pre.5
- Published
- Dec 15, 2022
- Platform
- windows/amd64
- Imports
- 12 packages
- Last checked
- 19 minutes ago –
Tools for package owners.