diff --git a/kernel/arch/i686/src/mem/mod.rs b/kernel/arch/i686/src/mem/mod.rs index 7c69f439..fbe7d661 100644 --- a/kernel/arch/i686/src/mem/mod.rs +++ b/kernel/arch/i686/src/mem/mod.rs @@ -1,8 +1,7 @@ use fixed::FixedTables; use kernel_arch_interface::{ mem::{DeviceMemoryAttributes, KernelTableManager, RawDeviceMemoryMapping}, - sync::split_spinlock, - KERNEL_VIRT_OFFSET, + split_spinlock, KERNEL_VIRT_OFFSET, }; use libk_mm_interface::{ address::{AsPhysicalAddress, PhysicalAddress}, @@ -26,7 +25,7 @@ split_spinlock! { use crate::ArchitectureImpl; #[link_section = ".data.tables"] - static KERNEL_TABLES @ inner: KernelImageObject = unsafe { + static KERNEL_TABLES: KernelImageObject = unsafe { KernelImageObject::new(FixedTables::zeroed()) }; } diff --git a/kernel/arch/x86_64/src/mem/mod.rs b/kernel/arch/x86_64/src/mem/mod.rs index 8fe2665a..eab8b69d 100644 --- a/kernel/arch/x86_64/src/mem/mod.rs +++ b/kernel/arch/x86_64/src/mem/mod.rs @@ -7,14 +7,13 @@ use core::{ use kernel_arch_interface::{ mem::{DeviceMemoryAttributes, KernelTableManager, RawDeviceMemoryMapping}, - sync::split_spinlock, + split_spinlock, }; use kernel_arch_x86::registers::CR3; use libk_mm_interface::{ address::PhysicalAddress, table::{page_index, EntryLevel, EntryLevelExt}, }; -use memtables::x86_64::FixedTables; use static_assertions::{const_assert_eq, const_assert_ne}; use yggdrasil_abi::error::Error; @@ -51,12 +50,12 @@ const RAM_MAPPING_L0I: usize = KERNEL_L0_INDEX - 1; const DEVICE_MAPPING_L3_COUNT: usize = 4; split_spinlock! { - use crate::ArchitectureImpl; - use crate::mem::FixedTables; use libk_mm_interface::KernelImageObject; + use memtables::x86_64::FixedTables; + use crate::ArchitectureImpl; #[link_section = ".data.tables"] - static KERNEL_TABLES @ inner: KernelImageObject = + static KERNEL_TABLES: KernelImageObject = unsafe { KernelImageObject::new(FixedTables::zeroed()) }; } diff --git a/kernel/driver/block/ahci/src/lib.rs b/kernel/driver/block/ahci/src/lib.rs index 1bea658b..188210ec 100644 --- a/kernel/driver/block/ahci/src/lib.rs +++ b/kernel/driver/block/ahci/src/lib.rs @@ -177,10 +177,6 @@ impl InterruptHandler for AhciController { false } - - fn display_name(&self) -> &str { - "AHCI IRQ" - } } impl Device for AhciController { diff --git a/kernel/driver/block/nvme/src/lib.rs b/kernel/driver/block/nvme/src/lib.rs index bef99da9..ce62b20e 100644 --- a/kernel/driver/block/nvme/src/lib.rs +++ b/kernel/driver/block/nvme/src/lib.rs @@ -337,10 +337,6 @@ impl InterruptHandler for NvmeController { false } } - - fn display_name(&self) -> &str { - "NVMe IRQ" - } } impl Device for NvmeController { diff --git a/kernel/driver/usb/xhci/src/controller.rs b/kernel/driver/usb/xhci/src/controller.rs index edd36183..31b8a315 100644 --- a/kernel/driver/usb/xhci/src/controller.rs +++ b/kernel/driver/usb/xhci/src/controller.rs @@ -378,8 +378,4 @@ impl InterruptHandler for Xhci { false } } - - fn display_name(&self) -> &str { - "xHCI IRQ" - } } diff --git a/kernel/driver/virtio/net/src/lib.rs b/kernel/driver/virtio/net/src/lib.rs index 2fb79804..a5ca9c0f 100644 --- a/kernel/driver/virtio/net/src/lib.rs +++ b/kernel/driver/virtio/net/src/lib.rs @@ -253,10 +253,6 @@ impl InterruptHandler for VirtioNet { queue_irq || config_irq } } - - fn display_name(&self) -> &str { - "virtio-net transport IRQ" - } } // impl MsiHandler for VirtioNet { diff --git a/kernel/lib/device-api/src/interrupt.rs b/kernel/lib/device-api/src/interrupt.rs index 3a82e510..ef88f772 100644 --- a/kernel/lib/device-api/src/interrupt.rs +++ b/kernel/lib/device-api/src/interrupt.rs @@ -66,9 +66,8 @@ pub enum IpiMessage { Shutdown, } -pub trait InterruptHandler: Sync + Send { +pub trait InterruptHandler: Device { fn handle_irq(self: Arc, vector: Option) -> bool; - fn display_name(&self) -> &str; } pub trait InterruptTable: Sync { @@ -143,16 +142,6 @@ pub struct FixedInterruptTable { rows: [Option>; N], } -impl) -> bool + Sync + Send> InterruptHandler for F { - fn handle_irq(self: Arc, vector: Option) -> bool { - self(vector) - } - - fn display_name(&self) -> &str { - "" - } -} - impl FixedInterruptTable { pub const fn new() -> Self { Self { @@ -190,13 +179,6 @@ impl InterruptTable for FixedInterruptTable { } } -// pub trait LocalInterruptController { -// } -// -// pub struct FixedInterruptTable { -// entries: [Option<&'static dyn InterruptHandler>; SIZE], -// } -// impl IrqLevel { pub fn override_default(self, value: IrqLevel) -> Self { match self { diff --git a/kernel/src/arch/aarch64/timer.rs b/kernel/src/arch/aarch64/timer.rs index a433c4a8..7a553ed7 100644 --- a/kernel/src/arch/aarch64/timer.rs +++ b/kernel/src/arch/aarch64/timer.rs @@ -48,10 +48,6 @@ impl InterruptHandler for ArmTimer { true } - - fn display_name(&self) -> &str { - "ARM Generic Timer" - } } impl Device for ArmTimer { diff --git a/kernel/src/arch/x86/peripherals/hpet.rs b/kernel/src/arch/x86/peripherals/hpet.rs index 482cfa1c..16734e6f 100644 --- a/kernel/src/arch/x86/peripherals/hpet.rs +++ b/kernel/src/arch/x86/peripherals/hpet.rs @@ -119,10 +119,6 @@ impl InterruptHandler for HpetTimer { true } - - fn display_name(&self) -> &str { - self.name.as_str() - } } impl Device for HpetTimer { diff --git a/kernel/src/arch/x86/peripherals/i8253.rs b/kernel/src/arch/x86/peripherals/i8253.rs index 2d620a96..7fb47f7f 100644 --- a/kernel/src/arch/x86/peripherals/i8253.rs +++ b/kernel/src/arch/x86/peripherals/i8253.rs @@ -32,10 +32,6 @@ pub struct I8253 { } impl InterruptHandler for I8253 { - fn display_name(&self) -> &str { - "i8253 PIT" - } - fn handle_irq(self: Arc, _vector: Option) -> bool { self.irq_handler_fastpath(); true diff --git a/kernel/src/arch/x86/peripherals/ps2/mod.rs b/kernel/src/arch/x86/peripherals/ps2/mod.rs index 1746ccca..ad2540be 100644 --- a/kernel/src/arch/x86/peripherals/ps2/mod.rs +++ b/kernel/src/arch/x86/peripherals/ps2/mod.rs @@ -106,10 +106,6 @@ impl InterruptHandler for PS2Controller { count != 0 } - - fn display_name(&self) -> &str { - "PS/2 Keyboard Interrupt" - } } impl Device for PS2Controller { diff --git a/kernel/src/arch/x86/peripherals/rtc.rs b/kernel/src/arch/x86/peripherals/rtc.rs index 75eca480..22f4b02f 100644 --- a/kernel/src/arch/x86/peripherals/rtc.rs +++ b/kernel/src/arch/x86/peripherals/rtc.rs @@ -141,10 +141,6 @@ impl InterruptHandler for Rtc { } true } - - fn display_name(&self) -> &str { - "x86 RTC IRQ" - } } impl Device for Rtc { diff --git a/kernel/src/arch/x86/peripherals/serial.rs b/kernel/src/arch/x86/peripherals/serial.rs index 6c7f94ed..122f9e3f 100644 --- a/kernel/src/arch/x86/peripherals/serial.rs +++ b/kernel/src/arch/x86/peripherals/serial.rs @@ -97,17 +97,6 @@ impl DebugSink for Port { } } -// impl SerialDevice for Port { -// fn send_byte(&self, byte: u8) -> Result<(), Error> { -// let mut inner = self.inner.lock(); -// inner.write(byte) -// } -// -// fn is_terminal(&self) -> bool { -// false -// } -// } - impl InterruptHandler for Port { fn handle_irq(self: Arc, _vector: Option) -> bool { let inner = self.terminal.output(); @@ -118,10 +107,6 @@ impl InterruptHandler for Port { false } } - - fn display_name(&self) -> &str { - "x86 COM port IRQ" - } } impl Device for Port { diff --git a/kernel/src/arch/x86_64/acpi.rs b/kernel/src/arch/x86_64/acpi.rs index 317a832a..d93d7612 100644 --- a/kernel/src/arch/x86_64/acpi.rs +++ b/kernel/src/arch/x86_64/acpi.rs @@ -11,7 +11,10 @@ use acpi_system::{ AcpiInterruptMethod, AcpiSleepState, AcpiSystem, AcpiSystemError, EventAction, FixedEvent, }; use alloc::{boxed::Box, sync::Arc}; -use device_api::interrupt::{InterruptHandler, IpiDeliveryTarget, IpiMessage, Irq}; +use device_api::{ + device::Device, + interrupt::{InterruptHandler, IpiDeliveryTarget, IpiMessage, Irq}, +}; use kernel_arch_x86_64::CPU_COUNT; use libk::device::external_interrupt_controller; use libk_mm::{ @@ -48,16 +51,18 @@ static ACPI_SYSTEM: OneTimeInit>> = // } // } +impl Device for SciHandler { + fn display_name(&self) -> &str { + "ACPI SCI Handler" + } +} + impl InterruptHandler for SciHandler { fn handle_irq(self: Arc, _vector: Option) -> bool { log::trace!("ACPI SCI received"); ACPI_SYSTEM.get().lock().handle_sci(); true } - - fn display_name(&self) -> &str { - "ACPI SCI Handler" - } } unsafe impl Allocator for AcpiAllocator { diff --git a/kernel/src/device/serial/bcm2835_aux_uart.rs b/kernel/src/device/serial/bcm2835_aux_uart.rs index f6066d92..524667be 100644 --- a/kernel/src/device/serial/bcm2835_aux_uart.rs +++ b/kernel/src/device/serial/bcm2835_aux_uart.rs @@ -139,10 +139,6 @@ impl InterruptHandler for Bcm2835AuxUart { status } - - fn display_name(&self) -> &str { - "BCM283x mini-UART IRQ" - } } impl Device for Bcm2835AuxUart { diff --git a/kernel/src/device/serial/pl011.rs b/kernel/src/device/serial/pl011.rs index 46c18940..aea33d4e 100644 --- a/kernel/src/device/serial/pl011.rs +++ b/kernel/src/device/serial/pl011.rs @@ -134,10 +134,6 @@ impl InterruptHandler for Pl011 { true } - - fn display_name(&self) -> &str { - "PL011 IRQ" - } } impl Device for Pl011 { diff --git a/xtask/src/env.rs b/xtask/src/env.rs index 70f7a299..8d847b9b 100644 --- a/xtask/src/env.rs +++ b/xtask/src/env.rs @@ -129,7 +129,7 @@ impl BuildEnv { (Arch::aarch64, Board::virt | Board::default) => "aarch64-unknown-qemu", (Arch::aarch64, Board::raspi4b) => "aarch64-unknown-raspi4b", (Arch::x86_64, Board::default) => "x86_64-unknown-none", - (Arch::i686, Board::default) => "x86_64-unknown-none", + (Arch::i686, Board::default) => "i686-unknown-none", _ => { log::error!("Invalid arch/board combination: {arch:?}/{board:?}"); panic!();