// Copyright (c) 2025 shibedrill // SPDX-License-Identifier: MIT use crate::format; use crate::memory::alloc::string::String; use crate::{LOGGER, LogLevel, log_trace}; use lazy_static::lazy_static; use limine::{ request::{ExecutableFileRequest, ModuleRequest}, response::ModuleResponse, }; #[used] #[unsafe(link_section = ".requests")] pub static FILE_REQUEST: ExecutableFileRequest = limine::request::ExecutableFileRequest::new(); #[used] #[unsafe(link_section = ".requests")] pub static MODULE_REQUEST: ModuleRequest = limine::request::ModuleRequest::new(); lazy_static! { pub static ref MODULE_RESPONSE: Option<&'static ModuleResponse> = MODULE_REQUEST.get_response(); } pub fn log_modules() { if let Some(modules) = *MODULE_RESPONSE { if !modules.modules().is_empty() { let mut log_msg: String = String::from("Kernel modules list:\n"); for module in modules.modules() { log_msg.push_str(&format!( "\t{}", String::from_utf8_lossy(module.path().to_bytes()) )); } log_trace!("{log_msg}") } } else { log_trace!("No modules found."); } }