فهرست منبع

multiboot2: EFIBootServicesNotExitedTag

Philipp Schuster 1 سال پیش
والد
کامیت
7a90d73f85
5فایلهای تغییر یافته به همراه24 افزوده شده و 17 حذف شده
  1. 2 0
      multiboot2/Changelog.md
  2. 3 3
      multiboot2/src/builder/information.rs
  3. 9 9
      multiboot2/src/efi.rs
  4. 6 1
      multiboot2/src/lib.rs
  5. 4 4
      multiboot2/src/memory_map.rs

+ 2 - 0
multiboot2/Changelog.md

@@ -22,6 +22,8 @@
 - **BREAKING** Renamed `ImageLoadPhysAddr` to `ImageLoadPhysAddrTag`
 - **BREAKING** Renamed `EFIImageHandle32` to `EFIImageHandle32Tag`
 - **BREAKING** Renamed `EFIImageHandle64` to `EFIImageHandle64Tag`
+- **BREAKING** Renamed `EFIBootServicesNotExited` to `EFIBootServicesNotExitedTag`
+- added `BootInformation::efi_bs_not_exited_tag`
 
 ## 0.15.1 (2023-03-18)
 - **BREAKING** `MemoryMapTag::all_memory_areas()` was renamed to `memory_areas`

+ 3 - 3
multiboot2/src/builder/information.rs

@@ -2,7 +2,7 @@
 use crate::builder::traits::StructAsBytes;
 use crate::{
     BasicMemoryInfoTag, BootInformationInner, BootLoaderNameTag, CommandLineTag,
-    EFIBootServicesNotExited, EFIImageHandle32Tag, EFIImageHandle64Tag, EFIMemoryMapTag, EFISdt32,
+    EFIBootServicesNotExitedTag, EFIImageHandle32Tag, EFIImageHandle64Tag, EFIMemoryMapTag, EFISdt32,
     EFISdt64, ElfSectionsTag, EndTag, FramebufferTag, ImageLoadPhysAddrTag, MemoryMapTag,
     ModuleTag, RsdpV1Tag, RsdpV2Tag, SmbiosTag,
 };
@@ -19,7 +19,7 @@ pub struct InformationBuilder {
     basic_memory_info_tag: Option<BasicMemoryInfoTag>,
     boot_loader_name_tag: Option<Box<BootLoaderNameTag>>,
     command_line_tag: Option<Box<CommandLineTag>>,
-    efi_boot_services_not_exited: Option<EFIBootServicesNotExited>,
+    efi_boot_services_not_exited: Option<EFIBootServicesNotExitedTag>,
     efi_image_handle32: Option<EFIImageHandle32Tag>,
     efi_image_handle64: Option<EFIImageHandle64Tag>,
     efi_memory_map_tag: Option<Box<EFIMemoryMapTag>>,
@@ -238,7 +238,7 @@ impl InformationBuilder {
     }
 
     pub fn efi_boot_services_not_exited(&mut self) {
-        self.efi_boot_services_not_exited = Some(EFIBootServicesNotExited::new());
+        self.efi_boot_services_not_exited = Some(EFIBootServicesNotExitedTag::new());
     }
 
     pub fn efi_image_handle32(&mut self, efi_image_handle32: EFIImageHandle32Tag) {

+ 9 - 9
multiboot2/src/efi.rs

@@ -11,13 +11,13 @@ use crate::builder::traits::StructAsBytes;
 /// EFI system table in 32 bit mode
 #[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
 #[repr(C)]
-pub struct EFISdt32 {
+pub struct EFISdt32Tag {
     typ: TagTypeId,
     size: u32,
     pointer: u32,
 }
 
-impl EFISdt32 {
+impl EFISdt32Tag {
     /// Create a new tag to pass the EFI32 System Table pointer.
     pub fn new(pointer: u32) -> Self {
         Self {
@@ -34,7 +34,7 @@ impl EFISdt32 {
 }
 
 #[cfg(feature = "builder")]
-impl StructAsBytes for EFISdt32 {
+impl StructAsBytes for EFISdt32Tag {
     fn byte_size(&self) -> usize {
         size_of::<Self>()
     }
@@ -43,13 +43,13 @@ impl StructAsBytes for EFISdt32 {
 /// EFI system table in 64 bit mode
 #[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
 #[repr(C)]
-pub struct EFISdt64 {
+pub struct EFISdt64Tag {
     typ: TagTypeId,
     size: u32,
     pointer: u64,
 }
 
-impl EFISdt64 {
+impl EFISdt64Tag {
     /// Create a new tag to pass the EFI64 System Table pointer.
     pub fn new(pointer: u64) -> Self {
         Self {
@@ -66,7 +66,7 @@ impl EFISdt64 {
 }
 
 #[cfg(feature = "builder")]
-impl StructAsBytes for EFISdt64 {
+impl StructAsBytes for EFISdt64Tag {
     fn byte_size(&self) -> usize {
         size_of::<Self>()
     }
@@ -140,19 +140,19 @@ impl StructAsBytes for EFIImageHandle64Tag {
 
 #[cfg(all(test, feature = "builder"))]
 mod tests {
-    use super::{EFIImageHandle32Tag, EFIImageHandle64Tag, EFISdt32, EFISdt64};
+    use super::{EFIImageHandle32Tag, EFIImageHandle64Tag, EFISdt32Tag, EFISdt64Tag};
 
     const ADDR: usize = 0xABCDEF;
 
     #[test]
     fn test_build_eftsdt32() {
-        let tag = EFISdt32::new(ADDR.try_into().unwrap());
+        let tag = EFISdt32Tag::new(ADDR.try_into().unwrap());
         assert_eq!(tag.sdt_address(), ADDR);
     }
 
     #[test]
     fn test_build_eftsdt64() {
-        let tag = EFISdt64::new(ADDR.try_into().unwrap());
+        let tag = EFISdt64Tag::new(ADDR.try_into().unwrap());
         assert_eq!(tag.sdt_address(), ADDR);
     }
 

+ 6 - 1
multiboot2/src/lib.rs

@@ -57,7 +57,7 @@ pub use elf_sections::{
 pub use framebuffer::{FramebufferColor, FramebufferField, FramebufferTag, FramebufferType};
 pub use image_load_addr::ImageLoadPhysAddrTag;
 pub use memory_map::{
-    BasicMemoryInfoTag, EFIBootServicesNotExited, EFIMemoryAreaType, EFIMemoryDesc,
+    BasicMemoryInfoTag, EFIBootServicesNotExitedTag, EFIMemoryAreaType, EFIMemoryDesc,
     EFIMemoryMapTag, MemoryArea, MemoryAreaType, MemoryMapTag,
 };
 pub use module::{ModuleIter, ModuleTag};
@@ -345,6 +345,11 @@ impl BootInformation {
         self.get_tag::<EFIImageHandle64Tag, _>(TagType::Efi64Ih)
     }
 
+    /// Search for the EFI boot services not exited tag.
+    pub fn efi_bs_not_exited_tag(&self) -> Option<&EFIBootServicesNotExitedTag> {
+        self.get_tag::<EFIBootServicesNotExitedTag, _>(TagType::EfiBs)
+    }
+
     /// Search for the Image Load Base Physical Address tag.
     pub fn load_base_addr_tag(&self) -> Option<&ImageLoadPhysAddrTag> {
         self.get_tag::<ImageLoadPhysAddrTag, _>(TagType::LoadBaseAddr)

+ 4 - 4
multiboot2/src/memory_map.rs

@@ -277,12 +277,12 @@ impl StructAsBytes for EFIMemoryDesc {
 /// EFI ExitBootServices was not called
 #[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
 #[repr(C)]
-pub struct EFIBootServicesNotExited {
+pub struct EFIBootServicesNotExitedTag {
     typ: TagTypeId,
     size: u32,
 }
 
-impl EFIBootServicesNotExited {
+impl EFIBootServicesNotExitedTag {
     #[cfg(feature = "builder")]
     pub fn new() -> Self {
         Self::default()
@@ -290,7 +290,7 @@ impl EFIBootServicesNotExited {
 }
 
 #[cfg(feature = "builder")]
-impl Default for EFIBootServicesNotExited {
+impl Default for EFIBootServicesNotExitedTag {
     fn default() -> Self {
         Self {
             typ: TagType::EfiBs.into(),
@@ -300,7 +300,7 @@ impl Default for EFIBootServicesNotExited {
 }
 
 #[cfg(feature = "builder")]
-impl StructAsBytes for EFIBootServicesNotExited {
+impl StructAsBytes for EFIBootServicesNotExitedTag {
     fn byte_size(&self) -> usize {
         mem::size_of::<Self>()
     }