xref: /plan9/sys/src/cmd/dossrv/lock.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1 #include <u.h>
2 #include <libc.h>
3 #include "iotrack.h"
4 #include "dat.h"
5 #include "fns.h"
6 
7 void
mlock(MLock * l)8 mlock(MLock *l)
9 {
10 
11 	if(l->key != 0 && l->key != 1)
12 		panic("uninitialized lock");
13 	if (l->key)
14 		panic("lock");
15 	l->key = 1;
16 }
17 
18 void
unmlock(MLock * l)19 unmlock(MLock *l)
20 {
21 
22 	if(l->key != 0 && l->key != 1)
23 		panic("uninitialized unlock");
24 	if (!l->key)
25 		panic("unlock");
26 	l->key = 0;
27 }
28 
29 int
canmlock(MLock * l)30 canmlock(MLock *l)
31 {
32 	if(l->key != 0 && l->key != 1)
33 		panic("uninitialized canlock");
34 	if (l->key)
35 		return 0;
36 	l->key = 1;
37 	return 1;
38 }
39