aboutsummaryrefslogtreecommitdiff
path: root/src/panic_wait.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/panic_wait.rs')
-rw-r--r--src/panic_wait.rs45
1 files changed, 0 insertions, 45 deletions
diff --git a/src/panic_wait.rs b/src/panic_wait.rs
deleted file mode 100644
index a8d0962..0000000
--- a/src/panic_wait.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-//! # Panic module
-//!
-//! A panic handler that infinitely waits
-
-use crate::{cpu, serial_println};
-use core::panic::PanicInfo;
-
-/// # Prevent Double Faulting
-///
-/// An atomic operation is used to mark that
-/// a fault has occurred. If it detects that
-/// there was already a fault, it spins to
-/// prevent a recursive faulting cycle.
-fn panic_prevent_reenter() {
- use core::sync::atomic::{AtomicBool, Ordering};
-
- static PANIC_IN_PROGRESS: AtomicBool = AtomicBool::new(false);
-
- if !PANIC_IN_PROGRESS.load(Ordering::Relaxed) {
- PANIC_IN_PROGRESS.store(true, Ordering::Relaxed);
- return;
- }
-
- cpu::wait_forever()
-}
-
-/// # Panic handler
-#[panic_handler]
-fn panic(info: &PanicInfo) -> ! {
- panic_prevent_reenter();
-
- let (location, line, column) = match info.location() {
- Some(loc) => (loc.file(), loc.line(), loc.column()),
- _ => ("???", 0, 0),
- };
-
- serial_println!(
- "Kernel panic!\n\nPanic Location:\n\tFile: '{}', line {}, column {}\n\n{}",
- location,
- line,
- column,
- info.message().unwrap_or(&format_args!("")),
- );
- cpu::wait_forever()
-}