x86_64: 使用Rust重写内核初始化代码 (#507)

* x86_64: 使用Rust重写内核初始化代码
This commit is contained in:
LoGin
2024-02-04 15:46:24 +08:00
committed by GitHub
parent 453452cc02
commit 5b59005f93
52 changed files with 494 additions and 475 deletions

View File

@ -1,10 +0,0 @@
use super::init::driver_init;
#[no_mangle]
unsafe extern "C" fn rs_driver_init() -> i32 {
let result = driver_init()
.map(|_| 0)
.unwrap_or_else(|e| e.to_posix_errno());
return result;
}

View File

@ -10,7 +10,9 @@ use super::{
platform::platform_bus_init,
};
pub(super) fn driver_init() -> Result<(), SystemError> {
/// 初始化设备驱动模型
#[inline(never)]
pub fn driver_init() -> Result<(), SystemError> {
devices_init()?;
buses_init()?;
classes_init()?;

View File

@ -1,5 +1,4 @@
pub mod block;
pub mod c_adapter;
pub mod char;
pub mod class;
pub mod cpu;

View File

@ -1090,25 +1090,9 @@ fn pci_check_bus(bus: u8) -> Result<u8, PciError> {
}
Ok(0)
}
/// @brief pci初始化函数(for c)
#[no_mangle]
pub extern "C" fn rs_pci_init() {
pci_init();
if PCI_ROOT_0.is_some() {
kdebug!("{}", PCI_ROOT_0.as_ref().unwrap());
//以下为ecam的读取寄存器值测试经测试可正常读取
// let bus_device_function = BusDeviceFunction {
// bus: 0,
// device: 2,
// function: 0,
// };
// kdebug!(
// "Ecam read virtio-net device status={:#x}",
// (PCI_ROOT_0.unwrap().read_config(bus_device_function, 4)>>16) as u16
// );
}
}
/// @brief pci初始化函数
/// pci初始化函数
#[inline(never)]
pub fn pci_init() {
kinfo!("Initializing PCI bus...");
if let Err(e) = pci_check_all_buses() {