wasmer_wasix

Struct WasiEnv

Source
pub struct WasiEnv {
Show 14 fields pub control_plane: WasiControlPlane, pub process: WasiProcess, pub thread: WasiThread, pub layout: WasiMemoryLayout, pub vfork: Option<WasiVFork>, pub poll_seed: u64, pub bin_factory: BinFactory, pub owned_handles: Vec<WasiThreadHandle>, pub runtime: Arc<dyn Runtime + Send + Sync + 'static>, pub capabilities: Capabilities, pub enable_deep_sleep: bool, pub enable_journal: bool, pub enable_exponential_cpu_backoff: Option<Duration>, pub replaying_journal: bool, /* private fields */
}
Expand description

The environment provided to the WASI imports.

Fields§

§control_plane: WasiControlPlane§process: WasiProcess

Represents the process this environment is attached to

§thread: WasiThread

Represents the thread this environment is attached to

§layout: WasiMemoryLayout

Represents the layout of the memory

§vfork: Option<WasiVFork>

Represents a fork of the process that is currently in play

§poll_seed: u64

Seed used to rotate around the events returned by poll_oneoff

§bin_factory: BinFactory

Binary factory attached to this environment

§owned_handles: Vec<WasiThreadHandle>

List of the handles that are owned by this context (this can be used to ensure that threads own themselves or others)

§runtime: Arc<dyn Runtime + Send + Sync + 'static>

Implementation of the WASI runtime.

§capabilities: Capabilities§enable_deep_sleep: bool

Is this environment capable and setup for deep sleeping

§enable_journal: bool

Enables the snap shotting functionality

§enable_exponential_cpu_backoff: Option<Duration>

Enables an exponential backoff of the process CPU usage when there are no active run tokens (when set holds the maximum amount of time that it will pause the CPU)

§replaying_journal: bool

Flag that indicates if the environment is currently replaying the journal (and hence it should not record new events)

Implementations§

Source§

impl WasiEnv

Source

pub fn builder(program_name: impl Into<String>) -> WasiEnvBuilder

Construct a new WasiEnvBuilder that allows customizing an environment.

Source

pub fn fork(&self) -> Result<(Self, WasiThreadHandle), ControlPlaneError>

Forking the WasiState is used when either fork or vfork is called

Source

pub fn pid(&self) -> WasiProcessId

Source

pub fn tid(&self) -> WasiThreadId

Source

pub fn will_use_asyncify(&self) -> bool

Returns true if this WASM process will need and try to use asyncify while its running which normally means.

Source

pub fn reinit(&mut self) -> Result<(), WasiStateCreationError>

Re-initializes this environment so that it can be executed again

Source

pub unsafe fn capable_of_deep_sleep(&self) -> bool

Returns true if this module is capable of deep sleep (needs asyncify to unwind and rewin)

§Safety

This function should only be called from within a syscall as it accessed objects that are a thread local (functions)

Source

pub fn layout(&self) -> &WasiMemoryLayout

Returns true if this thread can go into a deep sleep

Source

pub fn runtime(&self) -> &(dyn Runtime + Send + Sync)

Returns a copy of the current runtime implementation for this environment

Source

pub fn tasks(&self) -> &Arc<dyn VirtualTaskManager>

Returns a copy of the current tasks implementation for this environment

Source

pub fn fs_root(&self) -> &WasiFsRoot

Source

pub fn set_runtime<R>(&mut self, runtime: R)
where R: Runtime + Send + Sync + 'static,

Overrides the runtime implementation for this environment

Source

pub fn active_threads(&self) -> u32

Returns the number of active threads

Source

pub fn process_signals_and_exit( ctx: &mut FunctionEnvMut<'_, Self>, ) -> WasiResult<bool>

Porcesses any signals that are batched up or any forced exit codes

Source

pub fn should_exit(&self) -> Option<ExitCode>

Returns an exit code if the thread or process has been forced to exit

Source

pub fn net(&self) -> &DynVirtualNetworking

Accesses the virtual networking implementation

Source

pub fn try_clone_instance(&self) -> Option<Instance>

Tries to clone the instance from this environment

Source

pub fn stdout( &self, ) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>

Get the VirtualFile object at stdout

Source

pub fn stderr( &self, ) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>

Get the VirtualFile object at stderr

Source

pub fn stdin( &self, ) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>

Get the VirtualFile object at stdin

Source

pub fn should_journal(&self) -> bool

Returns true if the process should perform snapshots or not

Source

pub fn has_active_journal(&self) -> bool

Available on crate feature journal only.

Returns true if the environment has an active journal

Source

pub fn active_journal(&self) -> Result<&DynJournal, Errno>

Available on crate feature journal only.

Returns the active journal or fails with an error

Source

pub fn has_snapshot_trigger(&self, trigger: SnapshotTrigger) -> bool

Available on crate feature journal only.

Returns true if a particular snapshot trigger is enabled

Source

pub fn pop_snapshot_trigger(&mut self, trigger: SnapshotTrigger) -> bool

Available on crate feature journal only.

Returns true if a particular snapshot trigger is enabled

Source

pub fn std_dev_get( &self, fd: Fd, ) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>

Internal helper function to get a standard device handle. Expects one of __WASI_STDIN_FILENO, __WASI_STDOUT_FILENO, __WASI_STDERR_FILENO.

Source

pub fn use_package( &self, pkg: &BinaryPackage, ) -> Result<(), WasiStateCreationError>

Source

pub async fn use_package_async( &self, pkg: &BinaryPackage, ) -> Result<(), WasiStateCreationError>

Make all the commands in a BinaryPackage available to the WASI instance.

The BinaryPackageCommand::atom() will be saved to /bin/command.

This will also merge the command’s filesystem (BinaryPackage::webc_fs) into the current filesystem.

Source

pub fn uses<I>(&self, uses: I) -> Result<(), WasiStateCreationError>
where I: IntoIterator<Item = String>,

Given a list of packages, load them from the registry and make them available.

Source

pub fn map_commands( &self, map_commands: HashMap<String, PathBuf>, ) -> Result<(), WasiStateCreationError>

Available on crate feature sys only.
Source

pub fn blocking_on_exit(&self, process_exit_code: Option<ExitCode>)

Cleans up all the open files (if this is the main thread)

Source

pub fn on_exit( &self, process_exit_code: Option<ExitCode>, ) -> BoxFuture<'static, ()>

Cleans up all the open files (if this is the main thread)

Source

pub fn prepare_spawn(&self, cmd: &BinaryPackageCommand)

Trait Implementations§

Source§

impl Clone for WasiEnv

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for WasiEnv

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcastable for T
where T: Any + Debug + 'static,

Source§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

Source§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

Source§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

Source§

impl<T> Upcastable for T
where T: Any + Send + Sync + 'static,

Source§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
Source§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
Source§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> MaybeSendSync for T