From e0b5cf89ba0647402b6a5d905d5aa67a96c83497 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 19 Mar 2021 14:41:16 +0100 Subject: [PATCH] Use `uefi` crate and its `entry` macro --- Cargo.lock | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/main.rs | 10 ++++--- 3 files changed, 83 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c86f3e3e..99fd90da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +[[package]] +name = "bit_field" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" + [[package]] name = "bitflags" version = "1.2.1" @@ -131,6 +137,35 @@ dependencies = [ "autocfg", ] +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd9d1e9976102a03c542daa2eff1b43f9d72306342f3f8b3ed5fb8908195d6f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "time" version = "0.1.44" @@ -142,9 +177,50 @@ dependencies = [ "winapi", ] +[[package]] +name = "ucs2" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad643914094137d475641b6bab89462505316ec2ce70907ad20102d28a79ab8" +dependencies = [ + "bit_field", +] + +[[package]] +name = "uefi" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f86f972322768901e872186fc8b7df009ca4ce3e945fc337614cdca0c526d4" +dependencies = [ + "bitflags", + "log", + "ucs2", + "uefi-macros", +] + +[[package]] +name = "uefi-macros" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcca10ca861f34a320d178f3fdb29ffbf05087fc2c70d2a99860e3329bee1a8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "uefi_app" version = "0.1.0" +dependencies = [ + "uefi", +] + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] name = "uuid" diff --git a/Cargo.toml b/Cargo.toml index bdb3fb34..d0617bf4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,3 +10,4 @@ edition = "2018" members = ["disk_image"] [dependencies] +uefi = "0.8.0" diff --git a/src/main.rs b/src/main.rs index 4ad616d3..7b21c667 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,15 @@ #![feature(abi_efiapi)] - #![no_std] #![no_main] -use core::ffi::c_void; use core::panic::PanicInfo; +use uefi::prelude::entry; -#[no_mangle] -pub extern "efiapi" fn efi_main(image: *mut c_void, system_table: *const c_void) -> usize { +#[entry] +fn efi_main( + image: uefi::Handle, + system_table: uefi::table::SystemTable, +) -> uefi::Status { loop {} }