aboutsummaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86_64/interrupt/mod.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/arch/x86_64/interrupt/mod.rs b/src/arch/x86_64/interrupt/mod.rs
index ef050b0..410996a 100644
--- a/src/arch/x86_64/interrupt/mod.rs
+++ b/src/arch/x86_64/interrupt/mod.rs
@@ -5,9 +5,14 @@ use core::arch::asm;
#[no_mangle]
#[cfg(target_arch = "x86_64")]
-extern "C" fn guardian(slot: u16) {
+extern "C" fn interrupt_gate(slot: u16) {
interrupt_disable();
- println!("interrupt received {:x}", slot);
+ // NOTE: the interrupt handler should NEVER block on a lock; in this case
+ // the CGA screen is protected by a spinlock. The lock holder will never be
+ // able to release the lock if the interrupt handler blocks on it. Try
+ // spamming the keyboard with the following line of code uncommented: it
+ // will deadlock!
+ // println!("interrupt received {:x}", slot);
interrupt_enable();
}