Struct PcComponent

Source
pub struct PcComponent<'a> { /* private fields */ }
Expand description

Component helper for constructing a Pc chip instance.

During the call to finalize(), this helper will perform low-level initialization of the PC hardware to ensure a consistent CPU state. This includes initializing memory segmentation and interrupt handling. See x86::init for further details.

Implementations§

Source§

impl<'a> PcComponent<'a>

Source

pub unsafe fn new(pd: &'a mut PD, pt: &'a mut PT) -> Self

Creates a new PcComponent instance.

§Safety

It is unsafe to construct more than a single PcComponent during the entire lifetime of the kernel.

Before calling, memory must be identity-mapped. Otherwise, introduction of flat segmentation will cause the kernel’s code/data to move unexpectedly.

See x86::init for further details.

Trait Implementations§

Source§

impl Component for PcComponent<'static>

Source§

type StaticInput = (<SerialPortComponent as Component>::StaticInput, <SerialPortComponent as Component>::StaticInput, <SerialPortComponent as Component>::StaticInput, <SerialPortComponent as Component>::StaticInput, &'static mut MaybeUninit<Pc<'static>>)

An optional type to specify the chip or board specific static memory that a component needs to setup the output object(s). This is the memory that crate::static_buf!() would normally setup, but generic components cannot setup static buffers for types which are chip-dependent, so those buffers have to be passed in manually, and the Component::StaticInput type makes this possible.
Source§

type Output = &'static Pc<'static>

The type (e.g., capsule, peripheral) that this implementation of Component produces via Component::finalize(). This is typically a static reference (&'static).
Source§

fn finalize(self, s: Self::StaticInput) -> Self::Output

A factory method that returns an instance of the Output type of this Component implementation. This is used in the boot sequence to instantiate and initialize part of the Tock kernel. This factory method may only be called once per Component instance. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for PcComponent<'a>

§

impl<'a> RefUnwindSafe for PcComponent<'a>

§

impl<'a> Send for PcComponent<'a>

§

impl<'a> Sync for PcComponent<'a>

§

impl<'a> Unpin for PcComponent<'a>

§

impl<'a> !UnwindSafe for PcComponent<'a>

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.