limine_protocol_for_rust/requests/
executable_file.rs1use crate::requests::LimineRequest;
4use core::mem::MaybeUninit;
5use crate::{impl_limine_req, LimineReqId};
6use crate::file::LimineFile;
7
8#[repr(C, align(8))]
9pub struct ExecutableFileRequest{
10 id: LimineReqId,
11 revision: u64,
12 resp: MaybeUninit<usize>
13}
14
15impl ExecutableFileRequest {
16 pub const fn new(revision: u64) -> Self {
17 Self {
18 id: LimineReqId::new([0xad97e90e83f1ed67, 0x31eb5d1c5ff23b69]),
19 revision,
20 resp: MaybeUninit::uninit()
21 }
22 }
23}
24
25impl_limine_req!(ExecutableFileRequest, ExecutableFileResponse);
26
27#[repr(C, align(8))]
28#[derive(Copy, Clone)]
29pub struct ExecutableFileResponse {
30 revision: u64,
31 executable_file: *const LimineFile
32}
33
34impl ExecutableFileResponse {
35 pub fn get_executable_file(&self) -> &LimineFile {
36 unsafe { self.executable_file.as_ref().unwrap() }
37 }
38}