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
impl WasiEnv
Sourcepub fn builder(program_name: impl Into<String>) -> WasiEnvBuilder
pub fn builder(program_name: impl Into<String>) -> WasiEnvBuilder
Construct a new WasiEnvBuilder
that allows customizing an environment.
Sourcepub fn fork(&self) -> Result<(Self, WasiThreadHandle), ControlPlaneError>
pub fn fork(&self) -> Result<(Self, WasiThreadHandle), ControlPlaneError>
Forking the WasiState is used when either fork or vfork is called
pub fn pid(&self) -> WasiProcessId
pub fn tid(&self) -> WasiThreadId
Sourcepub fn will_use_asyncify(&self) -> bool
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.
Sourcepub fn reinit(&mut self) -> Result<(), WasiStateCreationError>
pub fn reinit(&mut self) -> Result<(), WasiStateCreationError>
Re-initializes this environment so that it can be executed again
Sourcepub unsafe fn capable_of_deep_sleep(&self) -> bool
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)
Sourcepub fn layout(&self) -> &WasiMemoryLayout
pub fn layout(&self) -> &WasiMemoryLayout
Returns true if this thread can go into a deep sleep
Sourcepub fn runtime(&self) -> &(dyn Runtime + Send + Sync)
pub fn runtime(&self) -> &(dyn Runtime + Send + Sync)
Returns a copy of the current runtime implementation for this environment
Sourcepub fn tasks(&self) -> &Arc<dyn VirtualTaskManager>
pub fn tasks(&self) -> &Arc<dyn VirtualTaskManager>
Returns a copy of the current tasks implementation for this environment
pub fn fs_root(&self) -> &WasiFsRoot
Sourcepub fn set_runtime<R>(&mut self, runtime: R)
pub fn set_runtime<R>(&mut self, runtime: R)
Overrides the runtime implementation for this environment
Sourcepub fn active_threads(&self) -> u32
pub fn active_threads(&self) -> u32
Returns the number of active threads
Sourcepub fn process_signals_and_exit(
ctx: &mut FunctionEnvMut<'_, Self>,
) -> WasiResult<bool>
pub fn process_signals_and_exit( ctx: &mut FunctionEnvMut<'_, Self>, ) -> WasiResult<bool>
Porcesses any signals that are batched up or any forced exit codes
Sourcepub fn should_exit(&self) -> Option<ExitCode>
pub fn should_exit(&self) -> Option<ExitCode>
Returns an exit code if the thread or process has been forced to exit
Sourcepub fn net(&self) -> &DynVirtualNetworking
pub fn net(&self) -> &DynVirtualNetworking
Accesses the virtual networking implementation
Sourcepub fn try_clone_instance(&self) -> Option<Instance>
pub fn try_clone_instance(&self) -> Option<Instance>
Tries to clone the instance from this environment
Sourcepub fn stdout(
&self,
) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>
pub fn stdout( &self, ) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>
Get the VirtualFile
object at stdout
Sourcepub fn stderr(
&self,
) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>
pub fn stderr( &self, ) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>
Get the VirtualFile
object at stderr
Sourcepub fn stdin(
&self,
) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>
pub fn stdin( &self, ) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>
Get the VirtualFile
object at stdin
Sourcepub fn should_journal(&self) -> bool
pub fn should_journal(&self) -> bool
Returns true if the process should perform snapshots or not
Sourcepub fn has_active_journal(&self) -> bool
Available on crate feature journal
only.
pub fn has_active_journal(&self) -> bool
journal
only.Returns true if the environment has an active journal
Sourcepub fn active_journal(&self) -> Result<&DynJournal, Errno>
Available on crate feature journal
only.
pub fn active_journal(&self) -> Result<&DynJournal, Errno>
journal
only.Returns the active journal or fails with an error
Sourcepub fn has_snapshot_trigger(&self, trigger: SnapshotTrigger) -> bool
Available on crate feature journal
only.
pub fn has_snapshot_trigger(&self, trigger: SnapshotTrigger) -> bool
journal
only.Returns true if a particular snapshot trigger is enabled
Sourcepub fn pop_snapshot_trigger(&mut self, trigger: SnapshotTrigger) -> bool
Available on crate feature journal
only.
pub fn pop_snapshot_trigger(&mut self, trigger: SnapshotTrigger) -> bool
journal
only.Returns true if a particular snapshot trigger is enabled
Sourcepub fn std_dev_get(
&self,
fd: Fd,
) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>
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
.
pub fn use_package( &self, pkg: &BinaryPackage, ) -> Result<(), WasiStateCreationError>
Sourcepub async fn use_package_async(
&self,
pkg: &BinaryPackage,
) -> Result<(), WasiStateCreationError>
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.
Sourcepub fn uses<I>(&self, uses: I) -> Result<(), WasiStateCreationError>where
I: IntoIterator<Item = String>,
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.
pub fn map_commands( &self, map_commands: HashMap<String, PathBuf>, ) -> Result<(), WasiStateCreationError>
sys
only.Sourcepub fn blocking_on_exit(&self, process_exit_code: Option<ExitCode>)
pub fn blocking_on_exit(&self, process_exit_code: Option<ExitCode>)
Cleans up all the open files (if this is the main thread)
Sourcepub fn on_exit(
&self,
process_exit_code: Option<ExitCode>,
) -> BoxFuture<'static, ()>
pub fn on_exit( &self, process_exit_code: Option<ExitCode>, ) -> BoxFuture<'static, ()>
Cleans up all the open files (if this is the main thread)
pub fn prepare_spawn(&self, cmd: &BinaryPackageCommand)
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for WasiEnv
impl !RefUnwindSafe for WasiEnv
impl Send for WasiEnv
impl Sync for WasiEnv
impl Unpin for WasiEnv
impl !UnwindSafe for WasiEnv
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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