#include #include #include void spin_lock(spin_lock_t* sl, uint64_t* flags) { spin_lock_save_flags(flags); while (atomic_flag_test_and_set_explicit(sl, memory_order_acquire)) spin_lock_relax(); } void spin_unlock(spin_lock_t* sl, uint64_t flags) { atomic_flag_clear_explicit(sl, memory_order_release); spin_lock_restore_flags(flags); }