#define lock(lkp) do{ \
while(!__sync_bool_compare_and_swap(lkp, 0, 1)) \
sched_yield(); \
} while(0)
#define unlock(lkp) do{ \
*(lkp) = 0; \
} while(0)
#define lock(lkp) do{ \
while(!__sync_bool_compare_and_swap(lkp, 0, 1)) \
sched_yield(); \
} while(0)
#define unlock(lkp) do{ \
*(lkp) = 0; \
} while(0)