diff --git a/core/prof/spall/spall.odin b/core/prof/spall/spall.odin index 6a78c466e..5c00d16a1 100644 --- a/core/prof/spall/spall.odin +++ b/core/prof/spall/spall.odin @@ -67,14 +67,14 @@ Buffer :: struct { BUFFER_DEFAULT_SIZE :: 0x10_0000 -context_create :: proc(filename: string) -> (ctx: Context, ok: bool) #optional_ok { +context_create :: proc(filename: string, freq_fallback_sleep := 2 * time.Second) -> (ctx: Context, ok: bool) #optional_ok { fd, err := os.open(filename, os.O_WRONLY | os.O_APPEND | os.O_CREATE | os.O_TRUNC, 0o600) if err != os.ERROR_NONE { return } ctx.fd = fd - freq, freq_ok := time.tsc_frequency() + freq, freq_ok := time.tsc_frequency(freq_fallback_sleep) ctx.precise_time = freq_ok ctx.timestamp_scale = ((1 / f64(freq)) * 1_000_000) if freq_ok else 1 diff --git a/core/time/perf.odin b/core/time/perf.odin index 69f7eceaa..87192093a 100644 --- a/core/time/perf.odin +++ b/core/time/perf.odin @@ -70,7 +70,7 @@ has_invariant_tsc :: proc "contextless" () -> bool { return false } -tsc_frequency :: proc "contextless" () -> (u64, bool) { +tsc_frequency :: proc "contextless" (fallback_sleep := 2 * Second) -> (u64, bool) { if !has_invariant_tsc() { return 0, false } @@ -81,7 +81,7 @@ tsc_frequency :: proc "contextless" () -> (u64, bool) { tsc_begin := intrinsics.read_cycle_counter() tick_begin := tick_now() - sleep(2 * Second) + sleep(fallback_sleep) tsc_end := intrinsics.read_cycle_counter() tick_end := tick_now()