xref: /DragonOS/kernel/src/init/mod.rs (revision 02343d0b5b47c07e7f4ec3818940795b1009fae1)
1 use crate::{
2     driver::{
3         tty::init::tty_early_init,
4         video::{fbdev::base::BootTimeScreenInfo, VideoRefreshManager},
5     },
6     libs::{lib_ui::screen_manager::scm_init, rwlock::RwLock},
7 };
8 
9 mod c_adapter;
10 
11 pub mod initcall;
12 pub mod initial_kthread;
13 
14 /// 启动参数
15 static BOOT_PARAMS: RwLock<BootParams> = RwLock::new(BootParams::new());
16 
17 #[inline(always)]
18 pub fn boot_params() -> &'static RwLock<BootParams> {
19     &BOOT_PARAMS
20 }
21 
22 fn init_intertrait() {
23     intertrait::init_caster_map();
24 }
25 
26 /// 在内存管理初始化之前,执行的初始化
27 pub fn init_before_mem_init() {
28     tty_early_init().expect("tty early init failed");
29     let video_ok = unsafe { VideoRefreshManager::video_init().is_ok() };
30     scm_init(video_ok);
31 }
32 
33 #[derive(Debug)]
34 pub struct BootParams {
35     pub screen_info: BootTimeScreenInfo,
36 }
37 
38 impl BootParams {
39     const DEFAULT: Self = BootParams {
40         screen_info: BootTimeScreenInfo::DEFAULT,
41     };
42 
43     const fn new() -> Self {
44         Self::DEFAULT
45     }
46 }
47