diff --git a/Kernel/Arch/aarch64/InterruptManagement.cpp b/Kernel/Arch/aarch64/InterruptManagement.cpp index e3496893aa..4f2b8663d2 100644 --- a/Kernel/Arch/aarch64/InterruptManagement.cpp +++ b/Kernel/Arch/aarch64/InterruptManagement.cpp @@ -42,12 +42,12 @@ u8 InterruptManagement::acquire_mapped_interrupt_number(u8 interrupt_number) return interrupt_number; } -Vector> const& InterruptManagement::controllers() +Vector> const& InterruptManagement::controllers() { return m_interrupt_controllers; } -LockRefPtr InterruptManagement::get_responsible_irq_controller(u8) +NonnullLockRefPtr InterruptManagement::get_responsible_irq_controller(u8) { // TODO: Support more interrupt controllers VERIFY(m_interrupt_controllers.size() == 1); diff --git a/Kernel/Arch/aarch64/InterruptManagement.h b/Kernel/Arch/aarch64/InterruptManagement.h index ecb8c39bd6..b0a82983c2 100644 --- a/Kernel/Arch/aarch64/InterruptManagement.h +++ b/Kernel/Arch/aarch64/InterruptManagement.h @@ -20,14 +20,14 @@ public: static u8 acquire_mapped_interrupt_number(u8 original_irq); - Vector> const& controllers(); - LockRefPtr get_responsible_irq_controller(u8 interrupt_vector); + Vector> const& controllers(); + NonnullLockRefPtr get_responsible_irq_controller(u8 interrupt_vector); private: InterruptManagement() = default; void find_controllers(); - Vector> m_interrupt_controllers; + Vector> m_interrupt_controllers; }; } diff --git a/Kernel/Arch/x86/InterruptManagement.h b/Kernel/Arch/x86/InterruptManagement.h index fbfa90aa55..ee70329996 100644 --- a/Kernel/Arch/x86/InterruptManagement.h +++ b/Kernel/Arch/x86/InterruptManagement.h @@ -51,8 +51,8 @@ public: virtual void switch_to_pic_mode(); virtual void switch_to_ioapic_mode(); - LockRefPtr get_responsible_irq_controller(u8 interrupt_vector); - LockRefPtr get_responsible_irq_controller(IRQControllerType controller_type, u8 interrupt_vector); + NonnullLockRefPtr get_responsible_irq_controller(u8 interrupt_vector); + NonnullLockRefPtr get_responsible_irq_controller(IRQControllerType controller_type, u8 interrupt_vector); Vector const& isa_overrides() const { return m_isa_interrupt_overrides; } @@ -69,7 +69,7 @@ private: InterruptManagement(); PhysicalAddress search_for_madt(); void locate_apic_data(); - Vector> m_interrupt_controllers; + Vector> m_interrupt_controllers; Vector m_isa_interrupt_overrides; Vector m_pci_interrupt_overrides; PhysicalAddress m_madt; diff --git a/Kernel/Arch/x86/common/InterruptManagement.cpp b/Kernel/Arch/x86/common/InterruptManagement.cpp index fca5c03433..d9f0dfbb15 100644 --- a/Kernel/Arch/x86/common/InterruptManagement.cpp +++ b/Kernel/Arch/x86/common/InterruptManagement.cpp @@ -65,7 +65,6 @@ void InterruptManagement::enumerate_interrupt_handlers(Function= 0); - VERIFY(!m_interrupt_controllers[index].is_null()); return *m_interrupt_controllers[index]; } @@ -98,7 +97,7 @@ u8 InterruptManagement::get_irq_vector(u8 mapped_interrupt_vector) return mapped_interrupt_vector; } -LockRefPtr InterruptManagement::get_responsible_irq_controller(IRQControllerType controller_type, u8 interrupt_vector) +NonnullLockRefPtr InterruptManagement::get_responsible_irq_controller(IRQControllerType controller_type, u8 interrupt_vector) { for (auto& irq_controller : m_interrupt_controllers) { if (irq_controller->gsi_base() <= interrupt_vector && irq_controller->type() == controller_type) @@ -107,7 +106,7 @@ LockRefPtr InterruptManagement::get_responsible_irq_controller(IR VERIFY_NOT_REACHED(); } -LockRefPtr InterruptManagement::get_responsible_irq_controller(u8 interrupt_vector) +NonnullLockRefPtr InterruptManagement::get_responsible_irq_controller(u8 interrupt_vector) { if (m_interrupt_controllers.size() == 1 && m_interrupt_controllers[0]->type() == IRQControllerType::i8259) { return m_interrupt_controllers[0]; diff --git a/Kernel/Interrupts/IRQHandler.cpp b/Kernel/Interrupts/IRQHandler.cpp index 015e51fdee..35893322ce 100644 --- a/Kernel/Interrupts/IRQHandler.cpp +++ b/Kernel/Interrupts/IRQHandler.cpp @@ -25,7 +25,6 @@ bool IRQHandler::eoi() { dbgln_if(IRQ_DEBUG, "EOI IRQ {}", interrupt_number()); if (!m_shared_with_others) { - VERIFY(!m_responsible_irq_controller.is_null()); m_responsible_irq_controller->eoi(*this); return true; } diff --git a/Kernel/Interrupts/IRQHandler.h b/Kernel/Interrupts/IRQHandler.h index a66b3d1f4f..c8b0eb2dd4 100644 --- a/Kernel/Interrupts/IRQHandler.h +++ b/Kernel/Interrupts/IRQHandler.h @@ -40,7 +40,7 @@ protected: private: bool m_shared_with_others { false }; bool m_enabled { false }; - LockRefPtr m_responsible_irq_controller; + NonnullLockRefPtr m_responsible_irq_controller; }; } diff --git a/Kernel/Interrupts/SharedIRQHandler.h b/Kernel/Interrupts/SharedIRQHandler.h index c0b1cbeb3c..6f942fc6ae 100644 --- a/Kernel/Interrupts/SharedIRQHandler.h +++ b/Kernel/Interrupts/SharedIRQHandler.h @@ -41,6 +41,6 @@ private: explicit SharedIRQHandler(u8 interrupt_number); bool m_enabled { true }; GenericInterruptHandler::List m_handlers; - LockRefPtr m_responsible_irq_controller; + NonnullLockRefPtr m_responsible_irq_controller; }; } diff --git a/Kernel/Interrupts/SpuriousInterruptHandler.h b/Kernel/Interrupts/SpuriousInterruptHandler.h index a5acf27cd6..348fa7265b 100644 --- a/Kernel/Interrupts/SpuriousInterruptHandler.h +++ b/Kernel/Interrupts/SpuriousInterruptHandler.h @@ -42,7 +42,7 @@ private: explicit SpuriousInterruptHandler(u8 interrupt_number); bool m_enabled { false }; bool m_real_irq { false }; - LockRefPtr m_responsible_irq_controller; + NonnullLockRefPtr m_responsible_irq_controller; OwnPtr m_real_handler; }; }