Struct Limits

Source
#[repr(C)]
pub struct Limits { pub heap_memory_size: usize, pub heap_address_space_size: usize, pub stack_size: usize, pub globals_size: usize, pub signal_stack_size: usize, }
Expand description

Runtime limits for the various memories that back a Lucet instance.

Each value is specified in bytes, and must be evenly divisible by the host page size (4K).

Fields§

§heap_memory_size: usize

Max size of the heap, which can be backed by real memory. (default 1M)

§heap_address_space_size: usize

Size of total virtual memory. (default 8G)

§stack_size: usize

Size of the guest stack. (default 128K)

§globals_size: usize

Size of the globals region in bytes; each global uses 8 bytes. (default 4K)

§signal_stack_size: usize

Size of the signal stack in bytes. (default SIGSTKSZ for release builds, at least 12K for debug builds; minimum MINSIGSTKSZ)

This difference is to account for the greatly increased stack size usage in the signal handler when running without optimizations.

Note that debug vs. release mode is determined by cfg(debug_assertions), so if you are specifically enabling debug assertions in your release builds, the default signal stack may be larger.

Implementations§

Source§

impl Limits

Source

pub const fn default() -> Limits

Source§

impl Limits

Source

pub fn total_memory_size(&self) -> usize

Source

pub fn validate(&self) -> Result<(), Error>

Validate that the limits are aligned to page sizes, and that the stack is not empty.

Trait Implementations§

Source§

impl Clone for Limits

Source§

fn clone(&self) -> Limits

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 Limits

Source§

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

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

impl From<&Limits> for lucet_alloc_limits

Source§

fn from(limits: &Limits) -> lucet_alloc_limits

Converts to this type from the input type.
Source§

impl From<&lucet_alloc_limits> for Limits

Source§

fn from(limits: &lucet_alloc_limits) -> Limits

Converts to this type from the input type.
Source§

impl From<Limits> for lucet_alloc_limits

Source§

fn from(limits: Limits) -> lucet_alloc_limits

Converts to this type from the input type.
Source§

impl From<lucet_alloc_limits> for Limits

Source§

fn from(limits: lucet_alloc_limits) -> Limits

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Limits

§

impl RefUnwindSafe for Limits

§

impl Send for Limits

§

impl Sync for Limits

§

impl Unpin for Limits

§

impl UnwindSafe for Limits

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