ソースを参照

Kernel: Correct Spurious Interrupt handlers' controller model() method

We don't return blindly the IRQ controller's model(), if the Spurious
IRQ handler is installed in IOAPIC environment, it's misleading to
return "IOAPIC" string since IOAPIC doesn't really handle Spurious
IRQs, therefore we return a "" string.
Liav A 5 年 前
コミット
666990fbcb

+ 6 - 0
Kernel/Interrupts/SpuriousInterruptHandler.cpp

@@ -81,4 +81,10 @@ void SpuriousInterruptHandler::disable_interrupt_vector()
     m_responsible_irq_controller->disable(interrupt_number());
     m_responsible_irq_controller->disable(interrupt_number());
 }
 }
 
 
+const char* SpuriousInterruptHandler::controller() const
+{
+    if (m_responsible_irq_controller->type() == IRQControllerType::i82093AA)
+        return "";
+    return m_responsible_irq_controller->model();
+}
 }
 }

+ 1 - 1
Kernel/Interrupts/SpuriousInterruptHandler.h

@@ -52,7 +52,7 @@ public:
 
 
     virtual HandlerType type() const override { return HandlerType::SpuriousInterruptHandler; }
     virtual HandlerType type() const override { return HandlerType::SpuriousInterruptHandler; }
     virtual const char* purpose() const override { return "Spurious Interrupt Handler"; }
     virtual const char* purpose() const override { return "Spurious Interrupt Handler"; }
-    virtual const char* controller() const override { return m_responsible_irq_controller->model(); }
+    virtual const char* controller() const override;
 
 
 private:
 private:
     void enable_interrupt_vector();
     void enable_interrupt_vector();