Struct kernel::process_standard::ProcessStandardDebug

source ·
struct ProcessStandardDebug {
    fixed_address_flash: Option<u32>,
    fixed_address_ram: Option<u32>,
    app_heap_start_pointer: Option<*const u8>,
    app_stack_start_pointer: Option<*const u8>,
    app_stack_min_pointer: Option<*const u8>,
    syscall_count: usize,
    last_syscall: Option<Syscall>,
    dropped_upcall_count: usize,
    timeslice_expiration_count: usize,
}
Expand description

State for helping with debugging apps.

These pointers and counters are not strictly required for kernel operation, but provide helpful information when an app crashes.

Fields§

§fixed_address_flash: Option<u32>

If this process was compiled for fixed addresses, save the address it must be at in flash. This is useful for debugging and saves having to re-parse the entire TBF header.

§fixed_address_ram: Option<u32>

If this process was compiled for fixed addresses, save the address it must be at in RAM. This is useful for debugging and saves having to re-parse the entire TBF header.

§app_heap_start_pointer: Option<*const u8>

Where the process has started its heap in RAM.

§app_stack_start_pointer: Option<*const u8>

Where the start of the stack is for the process. If the kernel does the PIC setup for this app then we know this, otherwise we need the app to tell us where it put its stack.

§app_stack_min_pointer: Option<*const u8>

How low have we ever seen the stack pointer.

§syscall_count: usize

How many syscalls have occurred since the process started.

§last_syscall: Option<Syscall>

What was the most recent syscall.

§dropped_upcall_count: usize

How many upcalls were dropped because the queue was insufficiently long.

§timeslice_expiration_count: usize

How many times this process has been paused because it exceeded its timeslice.

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.