From 3b32f6c3cef8c6c80df10b00e26a7b87b3a5806e Mon Sep 17 00:00:00 2001 From: Alex Zenla Date: Sat, 1 Nov 2025 19:08:47 -0400 Subject: [PATCH] fix(platform/timer/x86_64): if frequency is zero, panic --- src/platform/timer/x86_64.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/platform/timer/x86_64.rs b/src/platform/timer/x86_64.rs index 210b5cf..51d70f1 100644 --- a/src/platform/timer/x86_64.rs +++ b/src/platform/timer/x86_64.rs @@ -50,17 +50,21 @@ pub fn stop() -> u64 { } /// Measure the frequency of the platform timer. -fn measure_frequency(duration: &Duration) -> u64 { +fn measure_frequency() -> u64 { let start = start(); - uefi::boot::stall(*duration); + uefi::boot::stall(MEASURE_FREQUENCY_DURATION); let stop = stop(); let elapsed = stop.wrapping_sub(start) as f64; - (elapsed / duration.as_secs_f64()) as u64 + (elapsed / MEASURE_FREQUENCY_DURATION.as_secs_f64()) as u64 } /// Acquire the platform timer frequency. /// On x86_64, this is slightly expensive, so it should be done once. pub fn frequency() -> TickFrequency { - let frequency = measure_frequency(&MEASURE_FREQUENCY_DURATION); + let frequency = measure_frequency(); + // If the frequency is 0, then something went very wrong and we should panic. + if frequency == 0 { + panic!("unable to measure frequency"); + } TickFrequency::Measured(frequency, MEASURE_FREQUENCY_DURATION) }