use core::alloc::Layout; use crate::rhai_shell::shell; use acpi::{AcpiTables, PlatformInfo}; /// Experimental scratchpad for testing. pub fn scratchpad() { let axel_raw = "kernel{ vals= time: 123 fn| print: (None) -> (None); foo: (None) -> (Num); }"; let axel = axel::parse(axel_raw.to_string()); for node in axel { info!("{:?}", node); } // acpi(); shell(); } pub fn pci_fun() {} pub fn acpi() { let acpi_handler = AcpiStruct {}; let _table; unsafe { _table = AcpiTables::search_for_rsdp_bios(acpi_handler); } match _table.unwrap().platform_info().unwrap() { PlatformInfo { power_profile, interrupt_model, processor_info, pm_timer, } => { info!("{:?}", power_profile); info!("{:?}", interrupt_model); // info!("{:?}", processor_info.unwrap()); // info!("{:?}", pm_timer.unwrap()); } _ => todo!(), } } // TODO: move to a better place #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct AcpiStruct {} impl acpi::AcpiHandler for AcpiStruct { unsafe fn map_physical_region( &self, physical_address: usize, size: usize, ) -> acpi::PhysicalMapping { info!("PHYS ADDR: {:?}", physical_address); info!("Size: {:?}", size); todo!("map_physical_region"); } fn unmap_physical_region(_region: &acpi::PhysicalMapping) { todo!("unmap_physical_region"); } }