use core::{ffi::c_void, sync::atomic::AtomicBool};
use crate::list_entry;
use r_efi::efi;
pub const PROTOCOL_GUID: efi::Guid =
efi::Guid::from_fields(0xb7dfb4e1, 0x052f, 0x449f, 0x87, 0xbe, &[0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33]);
#[repr(C)]
#[derive(Debug)]
pub struct Protocol {
pub image_head: list_entry::Entry,
pub event_head: list_entry::Entry,
pub memory_descriptor_size: usize,
pub memory_descriptor_version: u32,
pub memory_map_size: usize,
pub memory_map_physical: *mut efi::MemoryDescriptor,
pub memory_map_virtual: *mut efi::MemoryDescriptor,
pub virtual_mode: AtomicBool,
pub at_runtime: AtomicBool,
}
#[repr(C)]
#[derive(Debug)]
pub struct ImageEntry {
pub image_base: *mut c_void,
pub image_size: u64,
pub relocation_data: *mut c_void,
pub handle: efi::Handle,
pub link: list_entry::Entry,
}
#[repr(C)]
#[derive(Debug)]
pub struct EventEntry {
pub event_type: u32,
pub notify_tpl: efi::Tpl,
pub notify_function: efi::EventNotify,
pub context: *mut c_void,
pub event: efi::Event,
pub link: list_entry::Entry,
}