limine_protocol_for_rust/requests/
executable_file.rs

1//! [Executable File Feature](https://codeberg.org/Limine/limine-protocol/src/branch/trunk/PROTOCOL.md#executable-file-feature)
2
3use 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}