[−][src]Struct sunrise_kernel::devices::lapic::LocalApicInternal
Local APIC Register structure.
Fields
reserved_000: LocalApicRegisterreserved_010: LocalApicRegisterlocal_apic_id: LocalApicRegisterUnique 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: LocalApicRegisterreserved_050: LocalApicRegisterreserved_060: LocalApicRegisterreserved_070: LocalApicRegistertask_priority: LocalApicRegisterThe 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: LocalApicRegisterPriority used for lowest-priority arbitration.
Only available on Nahalem CPUs.
See chapter 10.6.2.4: Lowest Priority Delivery Mode.
processor_priority: LocalApicRegisterThe 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: LocalApicRegisterFor 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: LocalApicRegisterOnly available on Nahalem CPUs. Undocumented...
logical_destination: LocalApicRegisterUpon 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: LocalApicRegisterSee 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: LocalApicRegisterSee LocalApic::in_service() documentation.
in_service1: LocalApicRegisterSee LocalApic::in_service() documentation.
in_service2: LocalApicRegisterSee LocalApic::in_service() documentation.
in_service3: LocalApicRegisterSee LocalApic::in_service() documentation.
in_service4: LocalApicRegisterSee LocalApic::in_service() documentation.
in_service5: LocalApicRegisterSee LocalApic::in_service() documentation.
in_service6: LocalApicRegisterSee LocalApic::in_service() documentation.
in_service7: LocalApicRegisterSee LocalApic::in_service() documentation.
trigger_mode0: LocalApicRegisterSee LocalApic::trigger_mode() documentation.
trigger_mode1: LocalApicRegisterSee LocalApic::trigger_mode() documentation.
trigger_mode2: LocalApicRegisterSee LocalApic::trigger_mode() documentation.
trigger_mode3: LocalApicRegisterSee LocalApic::trigger_mode() documentation.
trigger_mode4: LocalApicRegisterSee LocalApic::trigger_mode() documentation.
trigger_mode5: LocalApicRegisterSee LocalApic::trigger_mode() documentation.
trigger_mode6: LocalApicRegisterSee LocalApic::trigger_mode() documentation.
trigger_mode7: LocalApicRegisterSee LocalApic::trigger_mode() documentation.
interrupt_request0: LocalApicRegisterSee LocalApic::interrupt_request_register() documentation.
interrupt_request1: LocalApicRegisterSee LocalApic::interrupt_request_register() documentation.
interrupt_request2: LocalApicRegisterSee LocalApic::interrupt_request_register() documentation.
interrupt_request3: LocalApicRegisterSee LocalApic::interrupt_request_register() documentation.
interrupt_request4: LocalApicRegisterSee LocalApic::interrupt_request_register() documentation.
interrupt_request5: LocalApicRegisterSee LocalApic::interrupt_request_register() documentation.
interrupt_request6: LocalApicRegisterSee LocalApic::interrupt_request_register() documentation.
interrupt_request7: LocalApicRegisterSee 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: LocalApicRegisterreserved_2a0: LocalApicRegisterreserved_2b0: LocalApicRegisterreserved_2c0: LocalApicRegisterreserved_2d0: LocalApicRegisterreserved_2e0: LocalApicRegisterlvt_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: LocalApicRegisterSee LocalApic::send_interrupt_command() documentation.
interrupt_command_register1: LocalApicRegisterSee 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: LocalApicRegisterInitial count used by the APIC Timer.
See Section 10.5.4: APIC Timer.
current_count: LocalApicRegisterCurrent count used by the APIC Timer.
See Section 10.5.4: APIC Timer.
reserved_3a0: LocalApicRegisterreserved_3b0: LocalApicRegisterreserved_3c0: LocalApicRegisterreserved_3d0: LocalApicRegisterdivide_configuration: LocalApicRegisterDivide configuration used by the APIC timer.
See Section 10.5.4: APIC Timer.
reserved_3f0: LocalApicRegisterAuto 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>,