From fddd9865f7c4616a5c9573175815a87cc972d85f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gr=C3=A9goire?= Date: Sat, 18 Jul 2026 16:08:34 -0400 Subject: [PATCH] ke/mutex: do TTAS spin This is better to do than `pause`-ing in a CAS loop. --- src/kern/mutex.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/kern/mutex.zig b/src/kern/mutex.zig index cbea8a3..8d82d99 100644 --- a/src/kern/mutex.zig +++ b/src/kern/mutex.zig @@ -31,11 +31,15 @@ pub const Mutex = struct { // Fast path: Try to acquire without a turnstile by spinning a bit. for (0..optimistic_spins) |_| { - if (m.owner.cmpxchgWeak(null, curtd, .acquire, .monotonic) != null) { + if (m.owner.load(.monotonic) != null) { std.atomic.spinLoopHint(); continue; } + if (m.owner.cmpxchgWeak(null, curtd, .acquire, .monotonic) != null) { + continue; + } + ke.ipl.lower(ipl); return; }