feat: change font and release greate tty output
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
use core::arch::global_asm;
|
||||
use core::arch::asm;
|
||||
use crate::mem::vmm::KERNEL_SPACE; // Оставили только один импорт
|
||||
use crate::mem::vmm::KERNEL_SPACE;
|
||||
use crate::mem::address::VirtAddr;
|
||||
|
||||
// Глобальная статическая таблица дескрипторов прерываний (IDT)
|
||||
pub static mut IDT: crate::cpu::idt::InterruptDescriptorTable = crate::cpu::idt::InterruptDescriptorTable::new();
|
||||
|
||||
// Низкоуровневый ассемблерный трамплин (Context Save & Restore)
|
||||
global_asm!(
|
||||
".global page_fault_stub",
|
||||
"page_fault_stub:",
|
||||
@@ -80,10 +78,8 @@ pub extern "C" fn rust_page_fault_handler(error_code: u64) {
|
||||
let present = (error_code & 0x1) != 0;
|
||||
let virt_addr = VirtAddr(fault_addr);
|
||||
|
||||
// 1. Сначала применяем все отложенные отзывы прав из других Actor'ов (чтобы избежать Deadlock)
|
||||
process_deferred_mmu_events();
|
||||
|
||||
// 2. Теперь захватываем VMM для обработки текущего сбоя
|
||||
let mut vmm_guard = KERNEL_SPACE.lock();
|
||||
|
||||
if let Some(space) = vmm_guard.as_mut() {
|
||||
@@ -91,11 +87,11 @@ pub extern "C" fn rust_page_fault_handler(error_code: u64) {
|
||||
Ok(_) => return,
|
||||
Err(e) => {
|
||||
panic!(
|
||||
"KERNEL PANIC: Необработанный сбой виртуальной памяти (Page Fault)!\n\
|
||||
Адрес: {:#X}\n\
|
||||
Режим: {}\n\
|
||||
Присутствие: {}\n\
|
||||
Причина VMM: {:?}",
|
||||
"KERNEL PANIC: Unprocessed failure of virtual memory (Page Fault)!\n\
|
||||
Address: {:#X}\n\
|
||||
Mode: {}\n\
|
||||
Presence: {}\n\
|
||||
Cause VMM: {:?}",
|
||||
fault_addr,
|
||||
if write { "WRITE" } else { "READ" },
|
||||
if present { "YES (Protection Violation)" } else { "NO (Not Present)" },
|
||||
@@ -105,7 +101,7 @@ pub extern "C" fn rust_page_fault_handler(error_code: u64) {
|
||||
}
|
||||
} else {
|
||||
panic!(
|
||||
"KERNEL PANIC: Критический Page Fault до аллокации глобального KERNEL_SPACE!\n\
|
||||
"KERNEL PANIC: Critical Page Fault before alocate global KERNEL_SPACE!\n\
|
||||
Адрес сбоя: {:#X}",
|
||||
fault_addr
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user