xref: /DragonOS/kernel/src/driver/base/hypervisor.rs (revision 5eaf536d5b81c234f9aea560e0c9d994fac3eb76)
1 use alloc::{string::ToString, sync::Arc};
2 
3 use crate::syscall::SystemError;
4 
5 use super::kset::KSet;
6 
7 /// `/sys/hypervisor`的kset
8 static mut HYPERVISOR_KSET_INSTANCE: Option<Arc<KSet>> = None;
9 
10 #[inline(always)]
11 #[allow(dead_code)]
12 pub fn sys_hypervisor_kset() -> Arc<KSet> {
13     unsafe { HYPERVISOR_KSET_INSTANCE.clone().unwrap() }
14 }
15 
16 /// 初始化`/sys/hypervisor`的kset
17 pub(super) fn hypervisor_init() -> Result<(), SystemError> {
18     let hypervisor_kset = KSet::new("hypervisor".to_string());
19     hypervisor_kset
20         .register(None)
21         .expect("register hypervisor kset failed");
22     unsafe {
23         HYPERVISOR_KSET_INSTANCE = Some(hypervisor_kset);
24     }
25     return Ok(());
26 }
27