13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier #include "iotrack.h" 43e12c5d1SDavid du Colombier #include "dat.h" 53e12c5d1SDavid du Colombier #include "fns.h" 63e12c5d1SDavid du Colombier 73e12c5d1SDavid du Colombier void mlock(MLock * l)8*7dd7cddfSDavid du Colombiermlock(MLock *l) 93e12c5d1SDavid du Colombier { 10*7dd7cddfSDavid du Colombier 11*7dd7cddfSDavid du Colombier if(l->key != 0 && l->key != 1) 12*7dd7cddfSDavid du Colombier panic("uninitialized lock"); 133e12c5d1SDavid du Colombier if (l->key) 143e12c5d1SDavid du Colombier panic("lock"); 153e12c5d1SDavid du Colombier l->key = 1; 163e12c5d1SDavid du Colombier } 173e12c5d1SDavid du Colombier 183e12c5d1SDavid du Colombier void unmlock(MLock * l)19*7dd7cddfSDavid du Colombierunmlock(MLock *l) 203e12c5d1SDavid du Colombier { 21*7dd7cddfSDavid du Colombier 22*7dd7cddfSDavid du Colombier if(l->key != 0 && l->key != 1) 23*7dd7cddfSDavid du Colombier panic("uninitialized unlock"); 243e12c5d1SDavid du Colombier if (!l->key) 253e12c5d1SDavid du Colombier panic("unlock"); 263e12c5d1SDavid du Colombier l->key = 0; 273e12c5d1SDavid du Colombier } 283e12c5d1SDavid du Colombier 293e12c5d1SDavid du Colombier int canmlock(MLock * l)30*7dd7cddfSDavid du Colombiercanmlock(MLock *l) 313e12c5d1SDavid du Colombier { 32*7dd7cddfSDavid du Colombier if(l->key != 0 && l->key != 1) 33*7dd7cddfSDavid du Colombier panic("uninitialized canlock"); 343e12c5d1SDavid du Colombier if (l->key) 353e12c5d1SDavid du Colombier return 0; 363e12c5d1SDavid du Colombier l->key = 1; 373e12c5d1SDavid du Colombier return 1; 383e12c5d1SDavid du Colombier } 39