106d5e247SLoGin use alloc::{string::ToString, sync::Arc}; 206d5e247SLoGin 3*91e9d4abSLoGin use system_error::SystemError; 406d5e247SLoGin 506d5e247SLoGin use super::kset::KSet; 606d5e247SLoGin 706d5e247SLoGin /// `/sys/firmware`的kset 806d5e247SLoGin static mut FIRMWARE_KSET_INSTANCE: Option<Arc<KSet>> = None; 906d5e247SLoGin 1006d5e247SLoGin #[inline(always)] 1106d5e247SLoGin #[allow(dead_code)] sys_firmware_kset() -> Arc<KSet>1206d5e247SLoGinpub fn sys_firmware_kset() -> Arc<KSet> { 1306d5e247SLoGin unsafe { FIRMWARE_KSET_INSTANCE.clone().unwrap() } 1406d5e247SLoGin } 1506d5e247SLoGin 1606d5e247SLoGin /// 初始化`/sys/firmware`的kset firmware_init() -> Result<(), SystemError>1706d5e247SLoGinpub(super) fn firmware_init() -> Result<(), SystemError> { 1806d5e247SLoGin let firmware_kset = KSet::new("firmware".to_string()); 1906d5e247SLoGin firmware_kset 2006d5e247SLoGin .register(None) 2106d5e247SLoGin .expect("register firmware kset failed"); 2206d5e247SLoGin unsafe { 2306d5e247SLoGin FIRMWARE_KSET_INSTANCE = Some(firmware_kset); 2406d5e247SLoGin } 2506d5e247SLoGin return Ok(()); 2606d5e247SLoGin } 27