#include void spin_lock_irqsave(spin_lock_t *lck, unsigned long *flags) { while (!__sync_bool_compare_and_swap(lck, 0, 1)) { /* pause */ } } void spin_unlock_irqrestore(spin_lock_t *lck, unsigned long flags) { __sync_lock_release(lck); }