Ver código fonte

Kernel: Ensure that we don't use a hard-disabled IRQController

Liav A 5 anos atrás
pai
commit
c2c0e9fb04
2 arquivos alterados com 6 adições e 6 exclusões
  1. 3 0
      Kernel/Interrupts/IOAPIC.cpp
  2. 3 6
      Kernel/Interrupts/PIC.cpp

+ 3 - 0
Kernel/Interrupts/IOAPIC.cpp

@@ -245,6 +245,7 @@ int IOAPIC::find_redirection_entry_by_vector(u8 vector) const
 void IOAPIC::disable(u8 interrupt_vector)
 {
     InterruptDisabler disabler;
+    ASSERT(!is_hard_disabled());
     int index = find_redirection_entry_by_vector(interrupt_vector);
     if (index == (-1)) {
         map_interrupt_redirection(interrupt_vector);
@@ -257,6 +258,7 @@ void IOAPIC::disable(u8 interrupt_vector)
 void IOAPIC::enable(u8 interrupt_vector)
 {
     InterruptDisabler disabler;
+    ASSERT(!is_hard_disabled());
     int index = find_redirection_entry_by_vector(interrupt_vector);
     if (index == (-1)) {
         map_interrupt_redirection(interrupt_vector);
@@ -269,6 +271,7 @@ void IOAPIC::enable(u8 interrupt_vector)
 void IOAPIC::eoi(u8) const
 {
     InterruptDisabler disabler;
+    ASSERT(!is_hard_disabled());
     APIC::eoi();
 }
 

+ 3 - 6
Kernel/Interrupts/PIC.cpp

@@ -61,8 +61,7 @@ bool inline static is_all_masked(u8 reg)
 void PIC::disable(u8 irq)
 {
     InterruptDisabler disabler;
-    if (is_hard_disabled())
-        return;
+    ASSERT(!is_hard_disabled());
     u8 imr;
     if (irq >= 8) {
         imr = IO::in8(PIC1_CMD);
@@ -99,8 +98,7 @@ bool PIC::is_vector_enabled(u8 irq) const
 void PIC::enable(u8 irq)
 {
     InterruptDisabler disabler;
-    if (is_hard_disabled())
-        return;
+    ASSERT(!is_hard_disabled());
     u8 imr;
     if (irq >= 8) {
         imr = IO::in8(PIC1_CMD);
@@ -117,8 +115,7 @@ void PIC::enable(u8 irq)
 void PIC::eoi(u8 irq) const
 {
     InterruptDisabler disabler;
-    if (is_hard_disabled())
-        return;
+    ASSERT(!is_hard_disabled());
     if (irq >= 8)
         IO::out8(PIC1_CTL, 0x20);
     IO::out8(PIC0_CTL, 0x20);