diff --git a/core/sys/windows/synchronization.odin b/core/sys/windows/synchronization.odin index 1769bb0c8..c4e1d2188 100644 --- a/core/sys/windows/synchronization.odin +++ b/core/sys/windows/synchronization.odin @@ -3,7 +3,7 @@ package sys_windows foreign import Synchronization "system:Synchronization.lib" -@(default_calling_convention="c") +@(default_calling_convention="stdcall") foreign Synchronization { WaitOnAddress :: proc(Address: PVOID, CompareAddress: PVOID, AddressSize: SIZE_T, dwMilliseconds: DWORD) -> BOOL --- WakeByAddressSingle :: proc(Address: PVOID) --- diff --git a/core/testing/runner_windows.odin b/core/testing/runner_windows.odin index e6bf40807..560f23956 100644 --- a/core/testing/runner_windows.odin +++ b/core/testing/runner_windows.odin @@ -6,9 +6,6 @@ import win32 "core:sys/windows" import "core:runtime" import "core:intrinsics" import "core:time" -import "core:fmt" - -_ :: fmt Sema :: struct { count: i32, diff --git a/core/time/perf.odin b/core/time/perf.odin index f8d2765bb..f49b57f5b 100644 --- a/core/time/perf.odin +++ b/core/time/perf.odin @@ -6,16 +6,16 @@ Tick :: struct { _nsec: i64, // relative amount } -tick_now :: proc() -> Tick { +tick_now :: proc "contextless" () -> Tick { return _tick_now() } -tick_diff :: proc(start, end: Tick) -> Duration { +tick_diff :: proc "contextless" (start, end: Tick) -> Duration { d := end._nsec - start._nsec return Duration(d) } -tick_lap_time :: proc(prev: ^Tick) -> Duration { +tick_lap_time :: proc "contextless" (prev: ^Tick) -> Duration { d: Duration t := tick_now() if prev._nsec != 0 { @@ -25,18 +25,18 @@ tick_lap_time :: proc(prev: ^Tick) -> Duration { return d } -tick_since :: proc(start: Tick) -> Duration { +tick_since :: proc "contextless" (start: Tick) -> Duration { return tick_diff(start, tick_now()) } @(deferred_in_out=_tick_duration_end) -SCOPED_TICK_DURATION :: proc(d: ^Duration) -> Tick { +SCOPED_TICK_DURATION :: proc "contextless" (d: ^Duration) -> Tick { return tick_now() } -_tick_duration_end :: proc(d: ^Duration, t: Tick) { +_tick_duration_end :: proc "contextless" (d: ^Duration, t: Tick) { d^ = tick_since(t) } diff --git a/core/time/time_essence.odin b/core/time/time_essence.odin index 66c944cfb..72efe9f8f 100644 --- a/core/time/time_essence.odin +++ b/core/time/time_essence.odin @@ -4,15 +4,15 @@ import "core:sys/es" IS_SUPPORTED :: true; -now :: proc() -> Time { +now :: proc "contextless" () -> Time { // TODO Replace once there's a proper time API. return Time{_nsec = i64(es.TimeStampMs() * 1e6)}; } -sleep :: proc(d: Duration) { +sleep :: proc "contextless" (d: Duration) { es.Sleep(u64(d/Millisecond)); } -_tick_now :: proc() -> Tick { +_tick_now :: proc "contextless" () -> Tick { return Tick{_nsec = i64(es.TimeStampMs() * 1e6)}; } diff --git a/core/time/time_unix.odin b/core/time/time_unix.odin index 8410cd305..0d765b72d 100644 --- a/core/time/time_unix.odin +++ b/core/time/time_unix.odin @@ -4,9 +4,9 @@ package time IS_SUPPORTED :: true // NOTE: Times on Darwin are UTC. when ODIN_OS == "darwin" { - foreign import libc "System.framework" + foreign import libc "System.framework" } else { - foreign import libc "system:c" + foreign import libc "system:c" } @@ -40,7 +40,7 @@ CLOCK_SYSTEM :: CLOCK_REALTIME CLOCK_CALENDAR :: CLOCK_MONOTONIC -clock_gettime :: proc(clock_id: u64) -> TimeSpec { +clock_gettime :: proc "contextless" (clock_id: u64) -> TimeSpec { ts : TimeSpec // NOTE(tetra): Do we need to initialize this? _unix_clock_gettime(clock_id, &ts) return ts @@ -85,7 +85,7 @@ nanosleep :: proc(nanoseconds: i64) -> int { } -_tick_now :: proc() -> Tick { +_tick_now :: proc "contextless" () -> Tick { t := clock_gettime(CLOCK_MONOTONIC_RAW) _nsec := t.tv_sec*1e9 + t.tv_nsec return Tick{_nsec = _nsec} diff --git a/core/time/time_windows.odin b/core/time/time_windows.odin index 18a8c4046..0fb9eaa0f 100644 --- a/core/time/time_windows.odin +++ b/core/time/time_windows.odin @@ -17,8 +17,8 @@ sleep :: proc(d: Duration) { -_tick_now :: proc() -> Tick { - mul_div_u64 :: proc(val, num, den: i64) -> i64 { +_tick_now :: proc "contextless" () -> Tick { + mul_div_u64 :: proc "contextless" (val, num, den: i64) -> i64 { q := val / den r := val % den return q * num + r * num / den