about summary refs log tree commit diff
path: root/library/std/src/sys/uefi/alloc.rs
diff options
context:
space:
mode:
authorjoboet <jonasboettiger@icloud.com>2024-01-11 20:10:25 +0100
committerjoboet <jonasboettiger@icloud.com>2024-01-11 20:10:25 +0100
commit99128b7e45f8b95d962da2e6ea584767f0c85455 (patch)
tree20874cb2d8526a427342c32a45bc63a21022499c /library/std/src/sys/uefi/alloc.rs
parent062e7c6a951c1e4f33c0a6f6761755949cde15ec (diff)
downloadrust-99128b7e45f8b95d962da2e6ea584767f0c85455.tar.gz
rust-99128b7e45f8b95d962da2e6ea584767f0c85455.zip
std: begin moving platform support modules into `pal`
Diffstat (limited to 'library/std/src/sys/uefi/alloc.rs')
-rw-r--r--library/std/src/sys/uefi/alloc.rs49
1 files changed, 0 insertions, 49 deletions
diff --git a/library/std/src/sys/uefi/alloc.rs b/library/std/src/sys/uefi/alloc.rs
deleted file mode 100644
index ad3904d82f3..00000000000
--- a/library/std/src/sys/uefi/alloc.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-//! Global Allocator for UEFI.
-//! Uses [r-efi-alloc](https://crates.io/crates/r-efi-alloc)
-
-use r_efi::protocols::loaded_image;
-
-use crate::alloc::{GlobalAlloc, Layout, System};
-use crate::sync::OnceLock;
-use crate::sys::uefi::helpers;
-
-#[stable(feature = "alloc_system_type", since = "1.28.0")]
-unsafe impl GlobalAlloc for System {
-    unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
-        static EFI_MEMORY_TYPE: OnceLock<u32> = OnceLock::new();
-
-        // Return null pointer if boot services are not available
-        if crate::os::uefi::env::boot_services().is_none() {
-            return crate::ptr::null_mut();
-        }
-
-        // If boot services is valid then SystemTable is not null.
-        let system_table = crate::os::uefi::env::system_table().as_ptr().cast();
-
-        // Each loaded image has an image handle that supports `EFI_LOADED_IMAGE_PROTOCOL`. Thus, this
-        // will never fail.
-        let mem_type = EFI_MEMORY_TYPE.get_or_init(|| {
-            let protocol = helpers::image_handle_protocol::<loaded_image::Protocol>(
-                loaded_image::PROTOCOL_GUID,
-            )
-            .unwrap();
-            // Gives allocations the memory type that the data sections were loaded as.
-            unsafe { (*protocol.as_ptr()).image_data_type }
-        });
-
-        // The caller must ensure non-0 layout
-        unsafe { r_efi_alloc::raw::alloc(system_table, layout, *mem_type) }
-    }
-
-    unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
-        // Do nothing if boot services are not available
-        if crate::os::uefi::env::boot_services().is_none() {
-            return;
-        }
-
-        // If boot services is valid then SystemTable is not null.
-        let system_table = crate::os::uefi::env::system_table().as_ptr().cast();
-        // The caller must ensure non-0 layout
-        unsafe { r_efi_alloc::raw::dealloc(system_table, ptr, layout) }
-    }
-}