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.