Skip to main content

MultiCoreStrategy

Enum MultiCoreStrategy 

Source
#[non_exhaustive]
pub enum MultiCoreStrategy { Error, AutoPark, Ignore(IgnoreMarker), }
Available on crate feature unstable only.
Expand description

Strategy for the other core during flash operations.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Error

Returns Error::OtherCoreRunning if the other core is running.

§

AutoPark

Available on crate feature rt only.

Posts an IPC function on the other core for the operation.

The function runs from RAM. The function masks interrupts on that core and waits until the operation finishes. The operation waits until that core enters the function. A core that does not take the IPC interrupt delays the operation.

If crate::system::CpuControl did not start the APP core, the CPU-control registers stall that core instead.

§

Ignore(IgnoreMarker)

Does not check or stop the other core.

Construct with Self::ignore.

Implementations§

Source§

impl MultiCoreStrategy

Source

pub const unsafe fn ignore() -> Self

Creates a strategy that does not check or stop the other core.

§Safety

The other core must not fetch instructions or data from flash during any operation, including reads. Flash-backed caches are unavailable while an operation runs.

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Trait Implementations§

Source§

impl Clone for MultiCoreStrategy

Source§

fn clone(&self) -> MultiCoreStrategy

Returns a duplicate of the value. Read more
1.0.0 (const: unstable)§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for MultiCoreStrategy

Source§

impl Debug for MultiCoreStrategy

Source§

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

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

impl Default for MultiCoreStrategy

Source§

fn default() -> MultiCoreStrategy

Returns the “default value” for a type. Read more
Source§

impl Eq for MultiCoreStrategy

Source§

impl Hash for MultiCoreStrategy

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given [Hasher]. Read more
1.3.0§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given [Hasher]. Read more
Source§

impl PartialEq for MultiCoreStrategy

Source§

fn eq(&self, other: &MultiCoreStrategy) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable)§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for MultiCoreStrategy

Auto Trait Implementations§

§

impl Freeze for MultiCoreStrategy

§

impl RefUnwindSafe for MultiCoreStrategy

§

impl Send for MultiCoreStrategy

§

impl Sync for MultiCoreStrategy

§

impl Unpin for MultiCoreStrategy

§

impl UnsafeUnpin for MultiCoreStrategy

§

impl UnwindSafe for MultiCoreStrategy

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

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
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

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
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.