aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTianhao Wang <shrik3@mailbox.org>2024-04-17 21:09:09 +0200
committerTianhao Wang <shrik3@mailbox.org>2024-06-11 15:16:33 +0200
commit01a23bfd8d32510bacb22af9d8c5bef803758779 (patch)
treebe52bb2425d0560f4c31b6f3e15cbfa9690eea63 /src
parent9a7b6f6c61aad48e654c915077a5954957477a7a (diff)
interrupt: rename `guardian` to `interrupt_gate`
Diffstat (limited to 'src')
-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();
}