ahci内存越界问题修复+ mm的bug修复+在rust中解析acpi table (#384)

* bugfix: 修复了Flusher Drop的时候没有自动刷新TLB的bug

* 解决进程管理未初始化时,trap.c尝试打印pid导致错误的问题

* 设置kmalloc默认强制清0

* 修复ahci驱动的内存越界问题
* 修复mmio buddy忘记归还buddy block的问题
* 新增acpi模块,暂时能解析acpi tables
This commit is contained in:
LoGin
2023-09-17 15:41:01 +08:00
committed by GitHub
parent 1111099746
commit 7ae679ddd6
19 changed files with 234 additions and 92 deletions

View File

@ -1,4 +1,6 @@
use super::{kthread::kthread_init, process_init, ProcessManager};
use crate::smp::core::smp_get_processor_id;
use super::{kthread::kthread_init, process_init, ProcessManager, __PROCESS_MANAGEMENT_INIT_DONE};
#[no_mangle]
pub extern "C" fn rs_process_init() {
@ -21,14 +23,15 @@ pub extern "C" fn rs_get_idle_stack_top(cpu_id: u32) -> usize {
#[no_mangle]
pub extern "C" fn rs_current_pcb_cpuid() -> u32 {
return ProcessManager::current_pcb()
.sched_info()
.on_cpu()
.unwrap_or(u32::MAX);
return smp_get_processor_id();
}
#[no_mangle]
pub extern "C" fn rs_current_pcb_pid() -> u32 {
return ProcessManager::current_pcb().pid().0 as u32;
if unsafe { __PROCESS_MANAGEMENT_INIT_DONE } {
return ProcessManager::current_pcb().pid().0 as u32;
}
return 0;
}
#[no_mangle]