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