limine_protocol_for_rust/requests/
mod.rs1pub mod memory_map;
2pub mod framebuffer;
3pub mod bootloader_info;
4pub mod hhdm;
5pub mod date_at_boot;
6pub mod executable_cmdline;
7pub mod firmware_type;
8pub mod stack_size;
9pub mod paging_mode;
10#[cfg(target_arch = "riscv64")]
11pub mod bsp_hart_id;
12pub mod executable_file;
13pub mod rsdp;
14pub mod smbios;
15pub mod efi_system_table;
16pub mod efi_memory_map;
17pub mod executable_address;
18pub mod device_tree_blob;
19pub mod bootloader_performance;
20
21#[macro_export]
23macro_rules! impl_limine_req {
24 ($req:ty, $resp:ty) => {
25 impl LimineRequest for $req {
26 type Response = $resp;
27
28 fn get_response(&self) -> Option<&Self::Response> {
29 unsafe {
30 if self.resp.assume_init() == 0 {
31 return None
32 }
33 (self.resp.assume_init() as *const Self::Response).as_ref()
34 }
35 }
36 }
37 };
38}
39
40pub trait LimineRequest {
41 type Response;
42 fn get_response(&self) -> Option<&Self::Response>;
43}