xref: /inferno-os/os/boot/pc/ilock.c (revision 74a4d8c26dd3c1e9febcb717cfd6cb6512991a7a)
1*74a4d8c2SCharles.Forsyth #include "u.h"
2*74a4d8c2SCharles.Forsyth #include "lib.h"
3*74a4d8c2SCharles.Forsyth #include "mem.h"
4*74a4d8c2SCharles.Forsyth #include "dat.h"
5*74a4d8c2SCharles.Forsyth #include "fns.h"
6*74a4d8c2SCharles.Forsyth #include "io.h"
7*74a4d8c2SCharles.Forsyth 
8*74a4d8c2SCharles.Forsyth void
ilock(Lock * lk)9*74a4d8c2SCharles.Forsyth ilock(Lock *lk)
10*74a4d8c2SCharles.Forsyth {
11*74a4d8c2SCharles.Forsyth 	if(lk->locked != 0)
12*74a4d8c2SCharles.Forsyth 		panic("ilock");
13*74a4d8c2SCharles.Forsyth 	lk->spl = splhi();
14*74a4d8c2SCharles.Forsyth 	lk->locked = 1;
15*74a4d8c2SCharles.Forsyth }
16*74a4d8c2SCharles.Forsyth 
17*74a4d8c2SCharles.Forsyth void
iunlock(Lock * lk)18*74a4d8c2SCharles.Forsyth iunlock(Lock *lk)
19*74a4d8c2SCharles.Forsyth {
20*74a4d8c2SCharles.Forsyth 	if(lk->locked != 1)
21*74a4d8c2SCharles.Forsyth 		panic("iunlock");
22*74a4d8c2SCharles.Forsyth 	lk->locked = 0;
23*74a4d8c2SCharles.Forsyth 	splx(lk->spl);
24*74a4d8c2SCharles.Forsyth }
25