Skip to main content

SandboxConfiguration

Struct SandboxConfiguration 

Source
pub struct SandboxConfiguration { /* private fields */ }
Expand description

The complete set of configuration needed to create a Sandbox

Implementations§

Source§

impl SandboxConfiguration

Source

pub const DEFAULT_INPUT_SIZE: usize = 0x4000

The default size of input data

Source

pub const MIN_INPUT_SIZE: usize = 0x2000

The minimum size of input data

Source

pub const DEFAULT_OUTPUT_SIZE: usize = 0x4000

The default size of output data

Source

pub const MIN_OUTPUT_SIZE: usize = 0x2000

The minimum size of output data

Source

pub const DEFAULT_INTERRUPT_RETRY_DELAY: Duration

The default interrupt retry delay

Source

pub const INTERRUPT_VCPU_SIGRTMIN_OFFSET: u8 = 0

The default signal offset from SIGRTMIN used to determine the signal number for interrupting

Source

pub const DEFAULT_HEAP_SIZE: u64 = 131072

The default heap size of a hyperlight sandbox

Source

pub const DEFAULT_SCRATCH_SIZE: usize = 0x48000

The default size of the scratch region

Source

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.

Source

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

Source

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

Source

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

Source

pub fn set_interrupt_retry_delay(&mut self, delay: Duration)

Sets the interrupt retry delay

Source

pub fn get_interrupt_retry_delay(&self) -> Duration

Get the delay between retries for interrupts

Source

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

Source

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/WRMSR of 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.

Source

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.

Source

pub fn set_scratch_size(&mut self, scratch_size: usize)

Set the size of the scratch regiong

Trait Implementations§

Source§

impl Clone for SandboxConfiguration

Source§

fn clone(&self) -> SandboxConfiguration

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for SandboxConfiguration

Source§

impl Debug for SandboxConfiguration

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for SandboxConfiguration

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for SandboxConfiguration

Source§

impl PartialEq for SandboxConfiguration

Source§

fn eq(&self, other: &SandboxConfiguration) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for SandboxConfiguration

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> 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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> 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