pub enum ProcessLoadError {
    TbfHeaderParseFailure(TbfParseError),
    NotEnoughFlash,
    NotEnoughMemory,
    MpuInvalidFlashLength,
    MemoryAddressMismatch {
        actual_address: u32,
        expected_address: u32,
    },
    IncorrectFlashAddress {
        actual_address: u32,
        expected_address: u32,
    },
    IncompatibleKernelVersion {
        version: Option<(u16, u16)>,
    },
    InternalError,
}
Expand description

Errors that can occur when trying to load and create processes.

Variants

TbfHeaderParseFailure(TbfParseError)

The TBF header for the process could not be successfully parsed.

NotEnoughFlash

Not enough flash remaining to parse a process and its header.

NotEnoughMemory

Not enough memory to meet the amount requested by a process. Modify the process to request less memory, flash fewer processes, or increase the size of the region your board reserves for process memory.

MpuInvalidFlashLength

A process was loaded with a length in flash that the MPU does not support. The fix is probably to correct the process size, but this could also be caused by a bad MPU implementation.

MemoryAddressMismatch

Fields

actual_address: u32
expected_address: u32

A process specified a fixed memory address that it needs its memory range to start at, and the kernel did not or could not give the process a memory region starting at that address.

IncorrectFlashAddress

Fields

actual_address: u32
expected_address: u32

A process specified that its binary must start at a particular address, and that is not the address the binary is actually placed at.

IncompatibleKernelVersion

Fields

version: Option<(u16, u16)>

A process requires a newer version of the kernel or did not specify a required version. Processes can include the KernelVersion TBF header stating their compatible kernel version (^major.minor).

Boards may not require processes to include the KernelVersion TBF header, and the kernel supports ignoring a missing KernelVersion TBF header. In that case, this error will not be returned for a process missing a KernelVersion TBF header.

version is the (major, minor) kernel version the process indicates it requires. If version is None then the process did not include the KernelVersion TBF header.

InternalError

Process loading error due (likely) to a bug in the kernel. If you get this error please open a bug report.

Trait Implementations

Formats the value using the given formatter. Read more

Convert between a TBF Header parse error and a process load error.

We note that the process load error is because a TBF header failed to parse, and just pass through the parse error.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.