Struct wasmer_wasix::WasiEnv
source · pub struct WasiEnv {
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,
/* 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
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 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
pub fn runtime(&self) -> &dyn Runtime
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)where
R: Runtime + Send + Sync + 'static,
pub fn set_runtime<R>(&mut self, runtime: R)where R: Runtime + Send + Sync + 'static,
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 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 std_dev_get(
&self,
fd: WasiFd
) -> Result<Option<Box<dyn VirtualFile + Send + Sync + 'static>>, FsError>
pub fn std_dev_get( &self, fd: WasiFd ) -> 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
.
sourcepub fn use_package(
&self,
pkg: &BinaryPackage
) -> Result<(), WasiStateCreationError>
pub fn use_package( &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>
sourcepub fn blocking_cleanup(&self, exit_code: Option<ExitCode>)
pub fn blocking_cleanup(&self, exit_code: Option<ExitCode>)
Cleans up all the open files (if this is the main thread)