1 #define _LOCK_EXTENSION 2 #include "../plan9/sys9.h" 3 #include <lock.h> 4 5 int tas(int*); 6 7 void 8 lockinit(void) 9 { 10 } 11 12 void 13 lock(Lock *lk) 14 { 15 while(tas(&lk->val)) 16 _SLEEP(0); 17 } 18 19 int 20 canlock(Lock *lk) 21 { 22 if(tas(&lk->val)) 23 return 0; 24 return 1; 25 } 26 27 void 28 unlock(Lock *lk) 29 { 30 lk->val = 0; 31 } 32