实现unified-init库,支持收集初始化函数到一个数组,并统一初始化 (#474)

* 添加“统一初始化”的过程宏,并把SystemError独立成crate

* 使用unified-init来初始化fbmem

* 更新workflow,增加内核自动化静态测试
This commit is contained in:
LoGin
2023-12-25 23:12:27 +08:00
committed by GitHub
parent f110d330d5
commit 91e9d4ab55
158 changed files with 1102 additions and 610 deletions

View File

@ -1,6 +1,7 @@
use core::{fmt::Debug, ptr::null};
use alloc::{collections::BTreeMap, string::String, sync::Arc, vec::Vec};
use system_error::SystemError;
use crate::{
driver::base::block::SeekFrom,
@ -13,7 +14,6 @@ use crate::{
ucontext::{AddressSpace, UserStack},
VirtAddr,
},
syscall::SystemError,
};
/// 系统支持的所有二进制文件加载器的列表

View File

@ -1,6 +1,7 @@
use core::intrinsics::likely;
use alloc::sync::Arc;
use system_error::SystemError;
use crate::{
arch::{
@ -9,7 +10,7 @@ use crate::{
CurrentIrqArch,
},
exception::InterruptArch,
syscall::{user_access::UserBufferWriter, SystemError},
syscall::user_access::UserBufferWriter,
};
use super::{

View File

@ -1,6 +1,7 @@
use core::{intrinsics::unlikely, sync::atomic::Ordering};
use alloc::{string::ToString, sync::Arc};
use system_error::SystemError;
use crate::{
arch::{interrupt::TrapFrame, ipc::signal::Signal},
@ -9,7 +10,7 @@ use crate::{
libs::rwlock::RwLock,
mm::VirtAddr,
process::ProcessFlags,
syscall::{user_access::UserBufferWriter, SystemError},
syscall::user_access::UserBufferWriter,
};
use super::{

View File

@ -42,7 +42,7 @@ impl ProcessManager {
unsafe { ks.clear_pcb(true) };
ks
} else {
KernelStack::new().unwrap_or_else(|e: crate::syscall::SystemError| {
KernelStack::new().unwrap_or_else(|e| {
panic!("Failed to create kernel stack struct for AP {}: {:?}", i, e)
})
};

View File

@ -10,6 +10,7 @@ use alloc::{
sync::{Arc, Weak},
};
use atomic_enum::atomic_enum;
use system_error::SystemError;
use crate::{
arch::{sched::sched, CurrentIrqArch},
@ -17,7 +18,6 @@ use crate::{
kdebug, kinfo,
libs::{once::Once, spinlock::SpinLock},
process::{ProcessManager, ProcessState},
syscall::SystemError,
};
use super::{

View File

@ -12,6 +12,7 @@ use alloc::{
vec::Vec,
};
use hashbrown::HashMap;
use system_error::SystemError;
use crate::{
arch::{
@ -47,7 +48,7 @@ use crate::{
SchedPolicy, SchedPriority,
},
smp::kick_cpu,
syscall::{user_access::clear_user, Syscall, SystemError},
syscall::{user_access::clear_user, Syscall},
};
use self::kthread::WorkerPrivate;

View File

@ -1,10 +1,11 @@
use system_error::SystemError;
use crate::{
filesystem::vfs::{
file::{File, FileMode},
ROOT_INODE,
},
process::{Pid, ProcessManager},
syscall::SystemError,
};
/// @brief 初始化pid=1的进程的stdio

View File

@ -1,6 +1,7 @@
use num_traits::FromPrimitive;
use system_error::SystemError;
use crate::{syscall::SystemError, time::TimeSpec};
use crate::time::TimeSpec;
use super::ProcessControlBlock;

View File

@ -5,6 +5,7 @@ use alloc::{
sync::Arc,
vec::Vec,
};
use system_error::SystemError;
use super::{
abi::WaitOption,
@ -24,7 +25,7 @@ use crate::{
sched::completion::Completion,
syscall::{
user_access::{check_and_clone_cstr, check_and_clone_cstr_array, UserBufferWriter},
Syscall, SystemError,
Syscall,
},
};