]> Projects (at) Tadryanom (dot) Me - AdrOS.git/commit
feat: improve spinlock with per-arch cpu_relax() and memory barriers
authorTulio A M Mendes <[email protected]>
Tue, 10 Feb 2026 06:57:43 +0000 (03:57 -0300)
committerTulio A M Mendes <[email protected]>
Tue, 10 Feb 2026 06:57:43 +0000 (03:57 -0300)
commit880c0b5729f6507728025cf6b337ce31527ccc54
tree697bd0088156fd7b21705fe8bc5ce160a03dadea
parentaa28c4b8e4379da7048134890baed5fbb70668ee
feat: improve spinlock with per-arch cpu_relax() and memory barriers

Spinlock improvements for SMP readiness:
- Add cpu_relax() with per-arch spin-wait hints:
  x86: PAUSE, ARM/AArch64: YIELD, RISC-V: FENCE, MIPS: PAUSE
- Add __sync_synchronize() barrier before lock release in spin_unlock
- Add spin_is_locked() debug helper
- Add spin_trylock() for non-blocking lock attempts
- TTAS (test-and-test-and-set) pattern with cpu_relax() in inner loop
- __sync_lock_test_and_set maps to XCHG (x86), LDREX/STREX (ARM),
  AMOSWAP.W.AQ (RISC-V), LL/SC (MIPS)

Passes: make, cppcheck, QEMU smoke test.
include/spinlock.h