From 131e6adc3d4defbf75663767cd743ca512f3ce5c Mon Sep 17 00:00:00 2001 From: Mark Poliakov Date: Thu, 14 Aug 2025 15:11:26 +0300 Subject: [PATCH] riscv: fix irqhandle migration --- kernel/driver/bsp/riscv/src/plic.rs | 3 ++- kernel/src/device/serial/ns16550a.rs | 2 +- kernel/src/device/serial/snps_dw_apb_uart.rs | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/driver/bsp/riscv/src/plic.rs b/kernel/driver/bsp/riscv/src/plic.rs index 70419f5d..f5277636 100644 --- a/kernel/driver/bsp/riscv/src/plic.rs +++ b/kernel/driver/bsp/riscv/src/plic.rs @@ -261,11 +261,12 @@ impl Device for Plic { } impl DeviceTreeInterruptController for Plic { - fn map_interrupt(&self, property: &TProp, offset: usize) -> Option { + fn map_interrupt(self: Arc, property: &TProp, offset: usize) -> Option { let num = property.read_cell(offset, 1)?; Some(IrqHandle { irq: Irq::External(num as _), options: IrqOptions::default(), + intc: self.clone(), }) } diff --git a/kernel/src/device/serial/ns16550a.rs b/kernel/src/device/serial/ns16550a.rs index 706102e8..2213fb54 100644 --- a/kernel/src/device/serial/ns16550a.rs +++ b/kernel/src/device/serial/ns16550a.rs @@ -8,7 +8,7 @@ use device_api::{ use device_tree::driver::{device_tree_driver, Node, ProbeContext}; use libk::{ debug::DebugSink, - device::{external_interrupt_controller, manager::DEVICE_REGISTRY}, + device::manager::DEVICE_REGISTRY, vfs::{Terminal, TerminalInput, TerminalOutput}, }; use libk_mm::{address::PhysicalAddress, device::DeviceMemoryIo}; diff --git a/kernel/src/device/serial/snps_dw_apb_uart.rs b/kernel/src/device/serial/snps_dw_apb_uart.rs index dc8bc3b3..01a553bf 100644 --- a/kernel/src/device/serial/snps_dw_apb_uart.rs +++ b/kernel/src/device/serial/snps_dw_apb_uart.rs @@ -9,7 +9,7 @@ use device_api::{ use device_tree::driver::{device_tree_driver, Node, ProbeContext}; use libk::{ debug::{self, DebugSink}, - device::{external_interrupt_controller, manager::DEVICE_REGISTRY}, + device::manager::DEVICE_REGISTRY, vfs::{Terminal, TerminalInput, TerminalOutput}, }; use libk_mm::{address::PhysicalAddress, device::DeviceMemoryIo};