Skip to content

Commit

Permalink
Fixes from PR
Browse files Browse the repository at this point in the history
- Some comment fixes.
- Make some functions unsafe.
- Make helpers module private.
- Rebase on master
- Update r-efi to v4.2.0

Signed-off-by: Ayush Singh <[email protected]>
  • Loading branch information
Ayush1325 committed Sep 21, 2023
1 parent ffe6fab commit e492d9c
Show file tree
Hide file tree
Showing 7 changed files with 11 additions and 12 deletions.
3 changes: 0 additions & 3 deletions .nlsp-settings/rust_analyzer.json

This file was deleted.

4 changes: 2 additions & 2 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3008,9 +3008,9 @@ dependencies = [

[[package]]
name = "r-efi"
version = "4.1.0"
version = "4.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e7345c622833c6745e7b027a28aa95618813dc1f3c3de396206410267dce6f3"
checksum = "575fc2d9b3da54adbdfaddf6eca48fec256d977c8630a1750b8991347d1ac911"
dependencies = [
"compiler_builtins",
"rustc-std-workspace-core",
Expand Down
2 changes: 1 addition & 1 deletion library/std/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ hermit-abi = { version = "0.3.2", features = ['rustc-dep-of-std'], public = true
wasi = { version = "0.11.0", features = ['rustc-dep-of-std'], default-features = false }

[target.'cfg(target_os = "uefi")'.dependencies]
r-efi = { version = "4.1.0", features = ['rustc-dep-of-std', 'efiapi']}
r-efi = { version = "4.2.0", features = ['rustc-dep-of-std']}
r-efi-alloc = { version = "1.0.0", features = ['rustc-dep-of-std']}

[features]
Expand Down
2 changes: 1 addition & 1 deletion library/std/src/os/uefi/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ pub(crate) fn try_system_table() -> Option<NonNull<c_void>> {
}

/// Get the SystemHandle Pointer.
/// This function is mostly intended for places where panic is not an option
/// This function is mostly intended for places where panicking is not an option
pub(crate) fn try_image_handle() -> Option<NonNull<c_void>> {
GLOBALS.get().map(|x| x.1)
}
Expand Down
4 changes: 3 additions & 1 deletion library/std/src/sys/uefi/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,9 @@ pub(crate) fn create_event(
}
}

pub(crate) fn close_event(evt: NonNull<crate::ffi::c_void>) -> io::Result<()> {
/// # SAFETY
/// - The supplied event must be valid
pub(crate) unsafe fn close_event(evt: NonNull<crate::ffi::c_void>) -> io::Result<()> {
let boot_services: NonNull<efi::BootServices> =
boot_services().ok_or(BOOT_SERVICES_UNAVAILABLE)?.cast();
let r = unsafe {
Expand Down
6 changes: 3 additions & 3 deletions library/std/src/sys/uefi/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ pub mod thread_local_key;
#[path = "../unsupported/time.rs"]
pub mod time;

pub(crate) mod helpers;
mod helpers;

#[cfg(test)]
mod tests;
Expand Down Expand Up @@ -96,7 +96,7 @@ pub(crate) unsafe fn init(argc: isize, argv: *const *const u8, _sigpipe: u8) {
/// - must be called only once during runtime cleanup.
pub unsafe fn cleanup() {
if let Some(exit_boot_service_event) = EXIT_BOOT_SERVICE_EVENT.take() {
let _ = helpers::close_event(exit_boot_service_event);
let _ = unsafe { helpers::close_event(exit_boot_service_event) };
}
}

Expand All @@ -123,7 +123,7 @@ pub fn decode_error_kind(code: i32) -> crate::io::ErrorKind {

pub fn abort_internal() -> ! {
if let Some(exit_boot_service_event) = EXIT_BOOT_SERVICE_EVENT.take() {
let _ = helpers::close_event(exit_boot_service_event);
let _ = unsafe { helpers::close_event(exit_boot_service_event) };
}

if let (Some(boot_services), Some(handle)) =
Expand Down
2 changes: 1 addition & 1 deletion src/doc/rustc/src/platform-support/unknown-uefi.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,4 +300,4 @@ pub fn main() {
### BootServices
The current implementation of std make `BootServices` unavailable once `ExitBootServices` is called. Refer to [Runtime Drivers](https://edk2-docs.gitbook.io/edk-ii-uefi-driver-writer-s-guide/7_driver_entry_point/711_runtime_drivers) for more information regarding how to handle switching from using physical addresses to using virtual addresses.

Note: It should be noted that it is upto the user to drop all allocated memory before `ExitBootServices` is called.
Note: It should be noted that it is upto the user to drop all allocated memory before `ExitBootServices` is called.

0 comments on commit e492d9c

Please sign in to comment.