hal_x86_64/interrupt/
apic.rs

1//! Advanced Programmable Interrupt Controller (APIC).
2pub mod ioapic;
3pub mod local;
4pub use ioapic::{IoApic, IoApicSet};
5pub use local::LocalApic;
6
7use mycelium_util::bits::enum_from_bits;
8use raw_cpuid::CpuId;
9
10pub fn is_supported() -> bool {
11    CpuId::new()
12        .get_feature_info()
13        .map(|features| features.has_apic())
14        .unwrap_or(false)
15}
16
17enum_from_bits! {
18    #[derive(Debug, PartialEq, Eq)]
19    pub enum PinPolarity<u8> {
20        High = 0,
21        Low = 1,
22    }
23}
24
25enum_from_bits! {
26    #[derive(Debug, PartialEq, Eq)]
27    pub enum TriggerMode<u8> {
28        Edge = 0,
29        Level = 1,
30    }
31}