unix

package
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 6, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type PathOpenSockets

type PathOpenSockets struct{ wasi.System }

PathOpenSockets is an extension to WASI preview 1 that adds the ability to create TCP sockets. It works by proxying calls to path_open. If fd<0 and the path is of the form:

<network>:<operation>://<host>:<port>[?options=value[&option=value]*

where network is one of "tcp", "tcp4" or "tcp6", and operation is either "listen" or "dial", the extension will open a socket that either listens on, or connects to, the specified host:port address. Otherwise, the extension passes the arguments to the underlying WASI implementation to open a file or directory as normal.

The following options are available - nonblock=<0|1>: Open the socket in non-blocking mode. Default is 1. - nodelay=<0|1>: Set TCP_NODELAY. Default is 1. - reuseaddr=<0|1>: Set SO_REUSEADDR. Default is 1. - backlog=<N>: Set the listen(2) backlog. Default is 128.

func (*PathOpenSockets) PathOpen

func (p *PathOpenSockets) PathOpen(ctx context.Context, fd wasi.FD, lookupFlags wasi.LookupFlags, path string, openFlags wasi.OpenFlags, rightsBase, rightsInheriting wasi.Rights, fdFlags wasi.FDFlags) (wasi.FD, wasi.Errno)

type System

type System struct {
	// Args are the environment variables accessible via ArgsGet.
	Args []string

	// Environ is the environment variables accessible via EnvironGet.
	Environ []string

	// Realtime returns the realtime clock value.
	Realtime          func(context.Context) (uint64, error)
	RealtimePrecision time.Duration

	// Monotonic returns the monotonic clock value.
	Monotonic          func(context.Context) (uint64, error)
	MonotonicPrecision time.Duration

	// Yield is called when SchedYield is called. If Yield is nil,
	// SchedYield is a noop.
	Yield func(context.Context) error

	// Exit is called with an exit code when ProcExit is called.
	// If Exit is nil, ProcExit is a noop.
	Exit func(context.Context, int) error

	// Raise is called with a signal when ProcRaise is called.
	// If Raise is nil, ProcRaise is a noop.
	Raise func(context.Context, int) error

	// Rand is the source for RandomGet.
	Rand io.Reader
	// contains filtered or unexported fields
}

System is a WASI preview 1 implementation for Unix.

It implements the wasi.System and wasi.SocketsExtension interfaces.

An instance of System is not safe for concurrent use.

func (*System) ArgsGet

func (s *System) ArgsGet(ctx context.Context) ([]string, wasi.Errno)

func (*System) ArgsSizesGet

func (s *System) ArgsSizesGet(ctx context.Context) (argCount, stringBytes int, errno wasi.Errno)

func (*System) ClockResGet

func (s *System) ClockResGet(ctx context.Context, id wasi.ClockID) (wasi.Timestamp, wasi.Errno)

func (*System) ClockTimeGet

func (s *System) ClockTimeGet(ctx context.Context, id wasi.ClockID, precision wasi.Timestamp) (wasi.Timestamp, wasi.Errno)

func (*System) Close

func (s *System) Close(ctx context.Context) error

func (*System) EnvironGet

func (s *System) EnvironGet(ctx context.Context) ([]string, wasi.Errno)

func (*System) EnvironSizesGet

func (s *System) EnvironSizesGet(ctx context.Context) (envCount, stringBytes int, errno wasi.Errno)

func (*System) FDAdvise

func (s *System) FDAdvise(ctx context.Context, fd wasi.FD, offset wasi.FileSize, length wasi.FileSize, advice wasi.Advice) wasi.Errno

func (*System) FDAllocate

func (s *System) FDAllocate(ctx context.Context, fd wasi.FD, offset wasi.FileSize, length wasi.FileSize) wasi.Errno

func (*System) FDClose

func (s *System) FDClose(ctx context.Context, fd wasi.FD) wasi.Errno

func (*System) FDDataSync

func (s *System) FDDataSync(ctx context.Context, fd wasi.FD) wasi.Errno

func (*System) FDFileStatGet

func (s *System) FDFileStatGet(ctx context.Context, fd wasi.FD) (wasi.FileStat, wasi.Errno)

func (*System) FDFileStatSetSize

func (s *System) FDFileStatSetSize(ctx context.Context, fd wasi.FD, size wasi.FileSize) wasi.Errno

func (*System) FDFileStatSetTimes

func (s *System) FDFileStatSetTimes(ctx context.Context, fd wasi.FD, accessTime, modifyTime wasi.Timestamp, flags wasi.FSTFlags) wasi.Errno

func (*System) FDPreStatDirName

func (s *System) FDPreStatDirName(ctx context.Context, fd wasi.FD) (string, wasi.Errno)

func (*System) FDPreStatGet

func (s *System) FDPreStatGet(ctx context.Context, fd wasi.FD) (wasi.PreStat, wasi.Errno)

func (*System) FDPread

func (s *System) FDPread(ctx context.Context, fd wasi.FD, iovecs []wasi.IOVec, offset wasi.FileSize) (wasi.Size, wasi.Errno)

func (*System) FDPwrite

func (s *System) FDPwrite(ctx context.Context, fd wasi.FD, iovecs []wasi.IOVec, offset wasi.FileSize) (wasi.Size, wasi.Errno)

func (*System) FDRead

func (s *System) FDRead(ctx context.Context, fd wasi.FD, iovecs []wasi.IOVec) (wasi.Size, wasi.Errno)

func (*System) FDReadDir

func (s *System) FDReadDir(ctx context.Context, fd wasi.FD, entries []wasi.DirEntry, cookie wasi.DirCookie, bufferSizeBytes int) (int, wasi.Errno)

func (*System) FDRenumber

func (s *System) FDRenumber(ctx context.Context, from, to wasi.FD) wasi.Errno

func (*System) FDSeek

func (s *System) FDSeek(ctx context.Context, fd wasi.FD, delta wasi.FileDelta, whence wasi.Whence) (wasi.FileSize, wasi.Errno)

func (*System) FDStatGet

func (s *System) FDStatGet(ctx context.Context, fd wasi.FD) (wasi.FDStat, wasi.Errno)

func (*System) FDStatSetFlags

func (s *System) FDStatSetFlags(ctx context.Context, fd wasi.FD, flags wasi.FDFlags) wasi.Errno

func (*System) FDStatSetRights

func (s *System) FDStatSetRights(ctx context.Context, fd wasi.FD, rightsBase, rightsInheriting wasi.Rights) wasi.Errno

func (*System) FDSync

func (s *System) FDSync(ctx context.Context, fd wasi.FD) wasi.Errno

func (*System) FDTell

func (s *System) FDTell(ctx context.Context, fd wasi.FD) (wasi.FileSize, wasi.Errno)

func (*System) FDWrite

func (s *System) FDWrite(ctx context.Context, fd wasi.FD, iovecs []wasi.IOVec) (wasi.Size, wasi.Errno)

func (*System) PathCreateDirectory

func (s *System) PathCreateDirectory(ctx context.Context, fd wasi.FD, path string) wasi.Errno

func (*System) PathFileStatGet

func (s *System) PathFileStatGet(ctx context.Context, fd wasi.FD, flags wasi.LookupFlags, path string) (wasi.FileStat, wasi.Errno)

func (*System) PathFileStatSetTimes

func (s *System) PathFileStatSetTimes(ctx context.Context, fd wasi.FD, lookupFlags wasi.LookupFlags, path string, accessTime, modifyTime wasi.Timestamp, fstFlags wasi.FSTFlags) wasi.Errno
func (s *System) PathLink(ctx context.Context, fd wasi.FD, flags wasi.LookupFlags, oldPath string, newFD wasi.FD, newPath string) wasi.Errno

func (*System) PathOpen

func (s *System) PathOpen(ctx context.Context, fd wasi.FD, lookupFlags wasi.LookupFlags, path string, openFlags wasi.OpenFlags, rightsBase, rightsInheriting wasi.Rights, fdFlags wasi.FDFlags) (wasi.FD, wasi.Errno)
func (s *System) PathReadLink(ctx context.Context, fd wasi.FD, path string, buffer []byte) ([]byte, wasi.Errno)

func (*System) PathRemoveDirectory

func (s *System) PathRemoveDirectory(ctx context.Context, fd wasi.FD, path string) wasi.Errno

func (*System) PathRename

func (s *System) PathRename(ctx context.Context, fd wasi.FD, oldPath string, newFD wasi.FD, newPath string) wasi.Errno
func (s *System) PathSymlink(ctx context.Context, oldPath string, fd wasi.FD, newPath string) wasi.Errno

func (*System) PathUnlinkFile

func (s *System) PathUnlinkFile(ctx context.Context, fd wasi.FD, path string) wasi.Errno

func (*System) PollOneOff

func (s *System) PollOneOff(ctx context.Context, subscriptions []wasi.Subscription, events []wasi.Event) (int, wasi.Errno)

func (*System) Preopen

func (s *System) Preopen(hostfd int, path string, fdstat wasi.FDStat) wasi.FD

Preopen adds an open file to the list of pre-opens.

func (*System) ProcExit

func (s *System) ProcExit(ctx context.Context, code wasi.ExitCode) wasi.Errno

func (*System) ProcRaise

func (s *System) ProcRaise(ctx context.Context, signal wasi.Signal) wasi.Errno

func (*System) RandomGet

func (s *System) RandomGet(ctx context.Context, b []byte) wasi.Errno

func (*System) Register

func (s *System) Register(hostfd int, fdstat wasi.FDStat) wasi.FD

func (*System) SchedYield

func (s *System) SchedYield(ctx context.Context) wasi.Errno

func (*System) Shutdown

func (s *System) Shutdown(ctx context.Context) error

Shutdown may be called to asynchronously cancel all blocking operations on the system, causing calls such as PollOneOff to unblock and return an error indicating that the system is shutting down.

func (*System) SockAccept

func (s *System) SockAccept(ctx context.Context, fd wasi.FD, flags wasi.FDFlags) (wasi.FD, wasi.SocketAddress, wasi.SocketAddress, wasi.Errno)

func (*System) SockBind

func (s *System) SockBind(ctx context.Context, fd wasi.FD, addr wasi.SocketAddress) (wasi.SocketAddress, wasi.Errno)

func (*System) SockConnect

func (s *System) SockConnect(ctx context.Context, fd wasi.FD, peer wasi.SocketAddress) (wasi.SocketAddress, wasi.Errno)

func (*System) SockGetOptInt

func (s *System) SockGetOptInt(ctx context.Context, fd wasi.FD, level wasi.SocketOptionLevel, option wasi.SocketOption) (int, wasi.Errno)

func (*System) SockListen

func (s *System) SockListen(ctx context.Context, fd wasi.FD, backlog int) wasi.Errno

func (*System) SockLocalAddress

func (s *System) SockLocalAddress(ctx context.Context, fd wasi.FD) (wasi.SocketAddress, wasi.Errno)

func (*System) SockOpen

func (s *System) SockOpen(ctx context.Context, pf wasi.ProtocolFamily, socketType wasi.SocketType, protocol wasi.Protocol, rightsBase, rightsInheriting wasi.Rights) (wasi.FD, wasi.Errno)

func (*System) SockRecv

func (s *System) SockRecv(ctx context.Context, fd wasi.FD, iovecs []wasi.IOVec, flags wasi.RIFlags) (wasi.Size, wasi.ROFlags, wasi.Errno)

func (*System) SockRecvFrom

func (s *System) SockRecvFrom(ctx context.Context, fd wasi.FD, iovecs []wasi.IOVec, flags wasi.RIFlags) (wasi.Size, wasi.ROFlags, wasi.SocketAddress, wasi.Errno)

func (*System) SockRemoteAddress added in v0.3.2

func (s *System) SockRemoteAddress(ctx context.Context, fd wasi.FD) (wasi.SocketAddress, wasi.Errno)

func (*System) SockSend

func (s *System) SockSend(ctx context.Context, fd wasi.FD, iovecs []wasi.IOVec, flags wasi.SIFlags) (wasi.Size, wasi.Errno)

func (*System) SockSendTo

func (s *System) SockSendTo(ctx context.Context, fd wasi.FD, iovecs []wasi.IOVec, flags wasi.SIFlags, addr wasi.SocketAddress) (wasi.Size, wasi.Errno)

func (*System) SockSetOptInt

func (s *System) SockSetOptInt(ctx context.Context, fd wasi.FD, level wasi.SocketOptionLevel, option wasi.SocketOption, value int) wasi.Errno

func (*System) SockShutdown

func (s *System) SockShutdown(ctx context.Context, fd wasi.FD, flags wasi.SDFlags) wasi.Errno

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL