ShadowStorageBase

Struct ShadowStorageBase 

Source
pub struct ShadowStorageBase<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK, SS>
where AP: AccessPolicy, PP: PersistPolicy<PK>, PT: PersistTrigger<PK>, BitsImpl<BC>: Bits,
{ /* private fields */ }
Expand description

Core shadow table storage with configurable policies.

§Const Generics

  • TS: Total size of the shadow table in bytes
  • BS: Block size in bytes for dirty tracking granularity
  • BC: Block count (must equal TS / BS)

§Type Parameters

  • AP: Access policy controlling read/write permissions
  • PP: Persist policy determining what needs persistence
  • PT: Persist trigger receiving persistence requests
  • PK: Persist key type used to identify regions
  • SS: Stage state (NoStage or WithStage<SB>)

Implementations§

Source§

impl<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK> ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, NoStage>
where AP: AccessPolicy, PP: PersistPolicy<PK>, PT: PersistTrigger<PK>, BitsImpl<BC>: Bits,

Source

pub fn new(policy: AP, persist: PP, trigger: PT) -> Self

Source

pub fn with_staging<SB: StagingBuffer>( self, sb: SB, ) -> ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, WithStage<SB>>

Upgrade this storage to staged mode by supplying a staging implementation.

Source§

impl<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK, SS> ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, SS>
where AP: AccessPolicy, PP: PersistPolicy<PK>, PT: PersistTrigger<PK>, BitsImpl<BC>: Bits,

Source

pub fn host_shadow(&self) -> HostShadow<'_, TS, BS, BC, AP, PP, PT, PK, SS>

Source

pub fn kernel_shadow(&self) -> KernelShadow<'_, TS, BS, BC, AP, PP, PT, PK, SS>

Source

pub unsafe fn load_defaults_unchecked( &self, f: impl FnOnce(&mut WriteFn) -> Result<(), ShadowError>, ) -> Result<(), ShadowError>

Load initial values into the shadow table without marking dirty.

Use this during system initialization to populate the shadow with factory defaults or restored EEPROM data.

§Safety

Caller must ensure exclusive access to the storage. Typically safe during boot before interrupts are enabled.

Source

pub fn load_defaults( &self, f: impl FnOnce(&mut WriteFn) -> Result<(), ShadowError>, ) -> Result<(), ShadowError>

Load initial values into the shadow table without marking dirty.

Wraps Self::load_defaults_unchecked in a critical section.

Use this during system initialization to populate the shadow with factory defaults or restored EEPROM data.

Auto Trait Implementations§

§

impl<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK, SS> !Freeze for ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, SS>

§

impl<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK, SS> !RefUnwindSafe for ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, SS>

§

impl<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK, SS> !Send for ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, SS>

§

impl<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK, SS> !Sync for ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, SS>

§

impl<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK, SS> !Unpin for ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, SS>

§

impl<const TS: usize, const BS: usize, const BC: usize, AP, PP, PT, PK, SS> !UnwindSafe for ShadowStorageBase<TS, BS, BC, AP, PP, PT, PK, SS>

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

Source§

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

Source§

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.