xref: /plan9/sys/src/cmd/dossrv/lock.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
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 Colombier mlock(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 Colombier unmlock(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 Colombier canmlock(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