[−][src]Struct sunrise_kernel::devices::lapic::LocalApicInternal
Local APIC Register structure.
Fields
reserved_000: LocalApicRegister
reserved_010: LocalApicRegister
local_apic_id: LocalApicRegister
Unique ID of this Local APIC. May also be used as a way to uniquely identify a CPU.
On power up, system hardware assigns a unique APIC ID to each local APIC. The hardware assigned APIC ID is based on system topology and includes encoding for socket position and cluster information.
See chapter 10.4.6: Local APIC ID.
local_apic_version: LocalApicRegister<LocalApicVersion>
Can be used to identify the APIC version. In addition, the register specifies the number of entries in the local vector table (LVT) for a specific implementation.
See chapter 10.4.8: Local APIC Version.
reserved_040: LocalApicRegister
reserved_050: LocalApicRegister
reserved_060: LocalApicRegister
reserved_070: LocalApicRegister
task_priority: LocalApicRegister
The task priority allows software to set a priority threshold for interrupting the processor. This mechanism enables the operating system to temporarily block low priority interrupts from disturbing high-priority work that the processor is doing. The ability to block such interrupts using task priority results from the way that the TPR controls the value of the processor-priority register.
See chapter 10.8.3.1: Task and Processor Priorities
arbitration_priority: LocalApicRegister
Priority used for lowest-priority arbitration.
Only available on Nahalem CPUs.
See chapter 10.6.2.4: Lowest Priority Delivery Mode.
processor_priority: LocalApicRegister
The processor-priority class determines the priority threshold for interrupting the processor. The processor will deliver only those interrupts that have an interrupt-priority class higher than the processor-priority class in the PPR. If the processor-priority class is 0, the PPR does not inhibit the delivery any interrupt; if it is 15, the processor inhibits the delivery of all interrupts. (The processor-priority mechanism does not affect the delivery of interrupts with the NMI, SMI, INIT, ExtINT, INIT-deassert, and start-up delivery modes.)
See chapter 10.8.3.1: Task and Processor Priorities
end_of_interrupt: LocalApicRegister
For all interrupts except those delivered with the NMI, SMI, INIT, ExtINT, the start-up, or INIT-Deassert delivery mode, the interrupt handler must include a write to the end-of-interrupt (EOI) register. This write must occur at the end of the handler routine, sometime before the IRET instruction. This action indicates that the servicing of the current interrupt is complete and the local APIC can issue the next interrupt from the ISR.
See chapter 10.8.5: Signaling Interrupt Servicing Completion
remote_read: LocalApicRegister
Only available on Nahalem CPUs. Undocumented...
logical_destination: LocalApicRegister
Upon receiving an interrupt that was sent using logical destination mode, a local APIC compares the Message Destination Address with the values in its Logical Destination Register and Destination Format Register to determine if it should accept and handle the interrupt request.
See chapter 10.6.2.2: Logical Destination Mode
destination_format: LocalApicRegister
See chapter 10.6.2.2: Logical Destination Mode
spurious_interrupt_vector: LocalApicRegister<SpuriousInterrupt>
A special situation may occur when a processor raises its task priority to be greater than or equal to the level of the interrupt for which the processor INTR signal is currently being asserted. If at the time the INTA cycle is issued, the interrupt that was to be dispensed has become masked (programmed by software), the local APIC will deliver a spurious-interrupt vector. Dispensing the spurious-interrupt vector does not affect the ISR, so the handler for this vector should return without an EOI.
See chapter 10.9: Spurious Interrupt
in_service0: LocalApicRegister
See LocalApic::in_service() documentation.
in_service1: LocalApicRegister
See LocalApic::in_service() documentation.
in_service2: LocalApicRegister
See LocalApic::in_service() documentation.
in_service3: LocalApicRegister
See LocalApic::in_service() documentation.
in_service4: LocalApicRegister
See LocalApic::in_service() documentation.
in_service5: LocalApicRegister
See LocalApic::in_service() documentation.
in_service6: LocalApicRegister
See LocalApic::in_service() documentation.
in_service7: LocalApicRegister
See LocalApic::in_service() documentation.
trigger_mode0: LocalApicRegister
See LocalApic::trigger_mode() documentation.
trigger_mode1: LocalApicRegister
See LocalApic::trigger_mode() documentation.
trigger_mode2: LocalApicRegister
See LocalApic::trigger_mode() documentation.
trigger_mode3: LocalApicRegister
See LocalApic::trigger_mode() documentation.
trigger_mode4: LocalApicRegister
See LocalApic::trigger_mode() documentation.
trigger_mode5: LocalApicRegister
See LocalApic::trigger_mode() documentation.
trigger_mode6: LocalApicRegister
See LocalApic::trigger_mode() documentation.
trigger_mode7: LocalApicRegister
See LocalApic::trigger_mode() documentation.
interrupt_request0: LocalApicRegister
See LocalApic::interrupt_request_register() documentation.
interrupt_request1: LocalApicRegister
See LocalApic::interrupt_request_register() documentation.
interrupt_request2: LocalApicRegister
See LocalApic::interrupt_request_register() documentation.
interrupt_request3: LocalApicRegister
See LocalApic::interrupt_request_register() documentation.
interrupt_request4: LocalApicRegister
See LocalApic::interrupt_request_register() documentation.
interrupt_request5: LocalApicRegister
See LocalApic::interrupt_request_register() documentation.
interrupt_request6: LocalApicRegister
See LocalApic::interrupt_request_register() documentation.
interrupt_request7: LocalApicRegister
See LocalApic::interrupt_request_register() documentation.
error_status: LocalApicRegister<Error>
The local APIC records errors detected during interrupt handling in the error status register (ESR).
See chapter 10.5.3: Error Handling.
reserved_290: LocalApicRegister
reserved_2a0: LocalApicRegister
reserved_2b0: LocalApicRegister
reserved_2c0: LocalApicRegister
reserved_2d0: LocalApicRegister
reserved_2e0: LocalApicRegister
lvt_corrected_machine_interrupt: LocalApicRegister<LocalVector>
Specifies interrupt delivery when an overflow condition of corrected machine check error count reaching a threshold value occurred in a machine check bank supporting CMCI.
See Section 10.5.1, "Local Vector Table".
interrupt_command_register0: LocalApicRegister
See LocalApic::send_interrupt_command() documentation.
interrupt_command_register1: LocalApicRegister
See LocalApic::send_interrupt_command() documentation.
lvt_timer: LocalApicRegister<LocalVector>
Specifies interrupt delivery when the APIC timer signals an interrupt.
See Section 10.5.1, "Local Vector Table".
lvt_thermal_sensor: LocalApicRegister<LocalVector>
Specifies interrupt delivery when the thermal sensor generates an interrupt.
See Section 10.5.1, "Local Vector Table".
lvt_performance_monitoring_counter: LocalApicRegister<LocalVector>
Specifies interrupt delivery when a performance counter generates an interrupt on overflow
See Section 10.5.1, "Local Vector Table".
lvt_lint0: LocalApicRegister<LocalVector>
Specifies interrupt delivery when an interrupt is signaled at the LINT0.
See Section 10.5.1, "Local Vector Table".
lvt_lint1: LocalApicRegister<LocalVector>
Specifies interrupt delivery when an interrupt is signaled at the LINT1.
See Section 10.5.1, "Local Vector Table".
lvt_error: LocalApicRegister<LocalVector>
Specifies interrupt delivery when the APIC detects an internal error.
See Section 10.5.1, "Local Vector Table".
initial_count: LocalApicRegister
Initial count used by the APIC Timer.
See Section 10.5.4: APIC Timer.
current_count: LocalApicRegister
Current count used by the APIC Timer.
See Section 10.5.4: APIC Timer.
reserved_3a0: LocalApicRegister
reserved_3b0: LocalApicRegister
reserved_3c0: LocalApicRegister
reserved_3d0: LocalApicRegister
divide_configuration: LocalApicRegister
Divide configuration used by the APIC timer.
See Section 10.5.4: APIC Timer.
reserved_3f0: LocalApicRegister
Auto Trait Implementations
impl RefUnwindSafe for LocalApicInternal
impl Send for LocalApicInternal
impl Sync for LocalApicInternal
impl Unpin for LocalApicInternal
impl UnwindSafe for LocalApicInternal
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
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>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,