pub struct SandboxConfiguration { /* private fields */ }Expand description
The complete set of configuration needed to create a Sandbox
Implementations§
Source§impl SandboxConfiguration
impl SandboxConfiguration
Sourcepub const DEFAULT_INPUT_SIZE: usize = 0x4000
pub const DEFAULT_INPUT_SIZE: usize = 0x4000
The default size of input data
Sourcepub const MIN_INPUT_SIZE: usize = 0x2000
pub const MIN_INPUT_SIZE: usize = 0x2000
The minimum size of input data
Sourcepub const DEFAULT_OUTPUT_SIZE: usize = 0x4000
pub const DEFAULT_OUTPUT_SIZE: usize = 0x4000
The default size of output data
Sourcepub const MIN_OUTPUT_SIZE: usize = 0x2000
pub const MIN_OUTPUT_SIZE: usize = 0x2000
The minimum size of output data
Sourcepub const DEFAULT_INTERRUPT_RETRY_DELAY: Duration
pub const DEFAULT_INTERRUPT_RETRY_DELAY: Duration
The default interrupt retry delay
Sourcepub const INTERRUPT_VCPU_SIGRTMIN_OFFSET: u8 = 0
pub const INTERRUPT_VCPU_SIGRTMIN_OFFSET: u8 = 0
The default signal offset from SIGRTMIN used to determine the signal number for interrupting
Sourcepub const DEFAULT_HEAP_SIZE: u64 = 131072
pub const DEFAULT_HEAP_SIZE: u64 = 131072
The default heap size of a hyperlight sandbox
Sourcepub const DEFAULT_SCRATCH_SIZE: usize = 0x48000
pub const DEFAULT_SCRATCH_SIZE: usize = 0x48000
The default size of the scratch region
Sourcepub const MAX_GUEST_MSRS: usize = 16
pub const MAX_GUEST_MSRS: usize = 16
Maximum number of distinct guest MSRs that can be declared. KVM supports at most 16 MSR filter ranges. Each index may require its own range, so 16 is the portable limit across backends.
Sourcepub fn set_input_data_size(&mut self, input_data_size: usize)
pub fn set_input_data_size(&mut self, input_data_size: usize)
Set the size of the memory buffer that is made available for input to the guest the minimum value is MIN_INPUT_SIZE
Sourcepub fn set_output_data_size(&mut self, output_data_size: usize)
pub fn set_output_data_size(&mut self, output_data_size: usize)
Set the size of the memory buffer that is made available for output from the guest the minimum value is MIN_OUTPUT_SIZE
Sourcepub fn set_heap_size(&mut self, heap_size: u64)
pub fn set_heap_size(&mut self, heap_size: u64)
Set the heap size to use in the guest sandbox. If set to 0, the heap size will be determined from the PE file header
Sourcepub fn set_interrupt_retry_delay(&mut self, delay: Duration)
pub fn set_interrupt_retry_delay(&mut self, delay: Duration)
Sets the interrupt retry delay
Sourcepub fn get_interrupt_retry_delay(&self) -> Duration
pub fn get_interrupt_retry_delay(&self) -> Duration
Get the delay between retries for interrupts
Sourcepub fn get_interrupt_vcpu_sigrtmin_offset(&self) -> u8
pub fn get_interrupt_vcpu_sigrtmin_offset(&self) -> u8
Get the signal offset from SIGRTMIN used to determine the signal number for interrupting the VCPU thread
Sourcepub fn guest_msrs(
&mut self,
indices: &[u32],
) -> Result<&mut Self, GuestMsrError>
pub fn guest_msrs( &mut self, indices: &[u32], ) -> Result<&mut Self, GuestMsrError>
Declares the MSRs the guest depends on.
A declared MSR’s value is part of the sandbox’s saved state: captured by
MultiUseSandbox::snapshot and written
back on MultiUseSandbox::restore. Every
MSR you do not declare is reset to a clean default on each restore.
If this method is not called, only a small core of essential CPU state (kernel GS base, TSC) is saved and restored.
§Platform-specific behavior
- On KVM, declaring an MSR is also what lets the guest access it. The
guest faults on any
RDMSR/WRMSRof an undeclared MSR. - On MSHV and WHP there is no such enforcement, so declaration only controls what is saved and restored, not what the guest may touch.
Duplicate indices, within the slice or against the existing set, are ignored and do not count toward capacity.
§Errors
Returns GuestMsrError::CapacityExceeded if the distinct entries
would exceed Self::MAX_GUEST_MSRS. The declared set is unchanged on
error.
Sourcepub fn set_interrupt_vcpu_sigrtmin_offset(&mut self, offset: u8) -> Result<()>
pub fn set_interrupt_vcpu_sigrtmin_offset(&mut self, offset: u8) -> Result<()>
Sets the offset from SIGRTMIN to determine the real-time signal used for
interrupting the VCPU thread.
The final signal number is computed as SIGRTMIN + offset, and it must fall within
the valid range of real-time signals supported by the host system.
Returns Ok(()) if the offset is valid, or an error if it exceeds the maximum real-time signal number.
Sourcepub fn set_scratch_size(&mut self, scratch_size: usize)
pub fn set_scratch_size(&mut self, scratch_size: usize)
Set the size of the scratch regiong
Trait Implementations§
Source§impl Clone for SandboxConfiguration
impl Clone for SandboxConfiguration
Source§fn clone(&self) -> SandboxConfiguration
fn clone(&self) -> SandboxConfiguration
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more