#include #include #include #include void spin_lock (spin_lock_t* sl) { irq_save (); while (atomic_flag_test_and_set_explicit (sl, memory_order_acquire)) spin_lock_relax (); } void spin_unlock (spin_lock_t* sl) { atomic_flag_clear_explicit (sl, memory_order_release); irq_restore (); }