From 7c23aac677acdb20fb85af6588356871fab04033 Mon Sep 17 00:00:00 2001 From: "Ying-Chun Liu (PaulLiu)" Date: Fri, 25 Jul 2025 04:54:29 +0100 Subject: [PATCH] lib: uefi: boot_service_provider.cpp: implement Stall call We implement a Stall call for easier testing with Rust UEFI application. Signed-off-by: Ying-Chun Liu (PaulLiu) Link: https://rust-osdev.github.io/uefi-rs/tutorial/app.html --- lib/uefi/boot_service_provider.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/uefi/boot_service_provider.cpp b/lib/uefi/boot_service_provider.cpp index b8df9ab0..93463d00 100644 --- a/lib/uefi/boot_service_provider.cpp +++ b/lib/uefi/boot_service_provider.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -397,6 +398,17 @@ EfiStatus locate_handle_buffer(EfiLocateHandleSearchType search_type, return UNSUPPORTED; } +EfiStatus stall(size_t microseconds) { + uint64_t end_microseconds; + + end_microseconds = current_time_hires() + microseconds; + while (current_time_hires() < end_microseconds) { + thread_yield(); + } + + return SUCCESS; +} + } // namespace void setup_boot_service_table(EfiBootService *service) { @@ -428,4 +440,5 @@ void setup_boot_service_table(EfiBootService *service) { service->check_event = switch_stack_wrapper(); service->create_event = create_event; service->close_event = close_event; + service->stall = stall; }