Struct kernel::process::ProcessAddresses

source ·
pub struct ProcessAddresses {
    pub flash_start: usize,
    pub flash_non_protected_start: usize,
    pub flash_integrity_end: *const u8,
    pub flash_end: usize,
    pub sram_start: usize,
    pub sram_app_brk: usize,
    pub sram_grant_start: usize,
    pub sram_end: usize,
    pub sram_heap_start: Option<usize>,
    pub sram_stack_top: Option<usize>,
    pub sram_stack_bottom: Option<usize>,
}
Expand description

Collection of process state information related to the memory addresses of different elements of the process.

Fields§

§flash_start: usize

The address of the beginning of the process’s region in nonvolatile memory.

§flash_non_protected_start: usize

The address of the beginning of the region the process has access to in nonvolatile memory. This is after the TBF header and any other memory the kernel has reserved for its own use.

§flash_integrity_end: *const u8

The address immediately after the end of part of the process binary that is covered by integrity; the integrity region is [flash_start - flash_integrity_end). Footers are stored in the flash after flash_integrity_end.

§flash_end: usize

The address immediately after the end of the region allocated for this process in nonvolatile memory.

§sram_start: usize

The address of the beginning of the process’s allocated region in memory.

§sram_app_brk: usize

The address of the application break. This is the address immediately after the end of the memory the process has access to.

§sram_grant_start: usize

The lowest address of any allocated grant. This is the start of the region the kernel is using for its own internal state on behalf of this process.

§sram_end: usize

The address immediately after the end of the region allocated for this process in memory.

§sram_heap_start: Option<usize>

The address of the start of the process’s heap, if known. Note, managing this is completely up to the process, and the kernel relies on the process explicitly notifying it of this address. Therefore, its possible the kernel does not know the start address, or its start address could be incorrect.

§sram_stack_top: Option<usize>

The address of the top (or start) of the process’s stack, if known. Note, managing the stack is completely up to the process, and the kernel relies on the process explicitly notifying it of where it started its stack. Therefore, its possible the kernel does not know the start address, or its start address could be incorrect.

§sram_stack_bottom: Option<usize>

The lowest address the kernel has seen the stack pointer. Note, the stack is entirely managed by the process, and the process could intentionally obscure this address from the kernel. Also, the stack may have reached a lower address, this is only the lowest address seen when the process calls a syscall.

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<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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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.