mod.rs 747 B

12345678910111213141516171819202122232425262728293031
  1. use alloc::sync::Arc;
  2. use system_error::SystemError;
  3. use crate::driver::base::device::bus::{bus_register, Bus};
  4. use self::subsys::SerioBus;
  5. pub mod i8042;
  6. pub mod serio_device;
  7. pub mod serio_driver;
  8. pub mod subsys;
  9. static mut SERIO_BUS: Option<Arc<SerioBus>> = None;
  10. #[allow(dead_code)]
  11. #[inline(always)]
  12. pub fn serio_bus() -> Arc<SerioBus> {
  13. unsafe { SERIO_BUS.clone().unwrap() }
  14. }
  15. /// # 函数的功能
  16. /// 初始化Serio总线
  17. ///
  18. /// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/input/serio/serio.c#1024
  19. pub fn serio_bus_init() -> Result<(), SystemError> {
  20. let serio_bus = SerioBus::new();
  21. let r = bus_register(serio_bus.clone() as Arc<dyn Bus>);
  22. unsafe { SERIO_BUS = Some(serio_bus) };
  23. return r;
  24. }