Trait ApicControl

Source
pub trait ApicControl {
    // Required methods
    fn bsp(&self) -> bool;
    fn id(&self) -> u32;
    fn logical_id(&self) -> u32;
    fn version(&self) -> u32;
    fn eoi(&mut self);
    fn tsc_enable(&mut self, vector: u8);
    fn tsc_set(&self, value: u64);
    unsafe fn ipi_init(&mut self, core: ApicId);
    unsafe fn ipi_init_deassert(&mut self);
    unsafe fn ipi_startup(&mut self, core: ApicId, start_page: u8);
    unsafe fn send_ipi(&mut self, icr: Icr);
}
Expand description

Abstracts common interface of local APIC (x2APIC, xAPIC) hardware devices.

Required Methods§

Source

fn bsp(&self) -> bool

Is a bootstrap processor?

Source

fn id(&self) -> u32

Return APIC ID.

Source

fn logical_id(&self) -> u32

Returns the logical APIC ID.

Source

fn version(&self) -> u32

Read APIC version

Source

fn eoi(&mut self)

End Of Interrupt – Acknowledge interrupt delivery.

Source

fn tsc_enable(&mut self, vector: u8)

Enable TSC deadline timer.

Source

fn tsc_set(&self, value: u64)

Set TSC deadline value.

Source

unsafe fn ipi_init(&mut self, core: ApicId)

Send a INIT IPI to a core.

§Safety

Should only be used to reset or boot a new core.

Source

unsafe fn ipi_init_deassert(&mut self)

Deassert INIT IPI.

§Safety

Should only be used to reset or boot a new core.

Source

unsafe fn ipi_startup(&mut self, core: ApicId, start_page: u8)

Send a STARTUP IPI to a core.

§Safety

Should only be used to reset or boot a new core.

Source

unsafe fn send_ipi(&mut self, icr: Icr)

Send a generic IPI.

§Safety

Interrupts one or multiple cores.

Implementors§

Source§

impl ApicControl for X2APIC

Abstracts common interface of APIC (x2APIC, xAPIC) hardware devices.

Source§

impl ApicControl for XAPIC