Expand description
Crate containing Rust representations for the Limine Boot Protocol
§Example
If one wanted to have 64KiB of stack space, they would make a request like such
// Note that `#[used]` may be required in case Rust decides the object is unreachable or unused
#[used]
static STACK_REQUEST: Request<StackSizeRequest> = StackSizeRequest {
stack_size: 1024 * 64,
..StackSizeRequest::default()
}
.into();One could also decide to link the request into the limine_reqs section, which would be done like such
pub struct NotSync<T>(pub T);
impl<T> core::ops::Deref for NotSync<T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.0
}
}
unsafe impl<T> Sync for NotSync<T> {}
// Note that `#[used]` may be required in case Rust decides the object is unreachable or unused
#[used]
static ARR: [NotSync<*mut ()>; 1] = [NotSync(&STACK_REQUEST as *const _ as *mut ())];Note that this is very unsafe, as is expected by such a thing as a Bootloader. Rust has no clue we’re doing this at all.
Modules§
- structures
- Structures returned by the responses
Macros§
- limine_
request - This creates a limine request with const defaults by black magic.
It also automatically creates the
idandrevisionfields.
Structs§
- Boot
Time Request - Request the time on boot
- Boot
Time Response - Response to [
BootTimeRequest] - Bootloader
Info Request - Get information regarding the bootloader
- Bootloader
Info Response - Response to [
InfoRequest] - EfiSystem
Table Request - Request the address of the EFI System Table
- EfiSystem
Table Response - Response to [
EfiSystemTableRequest] - Entry
Point Request - Request the bootloader use the specified entry point instead of the default one
- Entry
Point Response - Response to [
EntryPointRequest] - Framebuffer
Request - Request a framebuffer
- Framebuffer
Response - Response to [
FramebufferRequest] - HHDM
Request - Request Higher Half Direct Mapping be enabled
- HHDM
Response - Response to [
HHDMRequest] - Kernel
Address Request - Request the physical and virtual address of the Kernel
- Kernel
Address Response - Response to [
KernelAddressRequest] - Kernel
File Request - Request the file the Kernel was loaded from
- Kernel
File Response - Response to [
KernelFileRequest] - Level5
Paging Request - Request Level 5 paging be enabled
- Level5
Paging Response - Response to [
Level5PagingRequest] - Memory
MapRequest - Request for receiving the Memory Map from the bootloader
- Memory
MapResponse - Response to [
MemoryMapRequest] - Module
Request - Request the loaded modules
- Module
Response - Response to [
ModuleRequest] - RSDP
Request - Request the address of the RSDP
- RSDP
Response - Response to [
RSDPRequest] - Request
- A Request type, which wraps the internal request in an unsafe cell, due to the possibility it may be mutated by things outside rust. However, it automatically derefences to the internal type for ergonomics.
- SMBIOS
Request - Request the SMBIOS entry point
- SMBIOS
Response - Response to [
SMBIOSRequest] - SMPRequest
- Request the bootloader bootstrap the secondary processors
- SMPResponse
- Response to [
SMPRequest] - Stack
Size Request - Specify how much stack you desire the bootloader to give you
- Stack
Size Response - Response to [
StackSizeRequest] - Terminal
Request - Request a terminal
- Terminal
Response - Response to [
TerminalRequest]
Constants§
- COMMON_
MAGIC - Common Magic for Limine requests
Traits§
- Const
Default - A trait for const defaults