xref: /plan9-contrib/sys/src/ape/lib/ap/arm/lock.c (revision ec59a3ddbfceee0efe34584c2c9981a5e5ff1ec4)
1 #define _LOCK_EXTENSION
2 #include "../plan9/sys9.h"
3 #include <lock.h>
4 
5 int	tas(int*);
6 
7 void
8 lock(Lock *lk)
9 {
10 	while(tas(&lk->val))
11 		_SLEEP(0);
12 }
13 
14 int
15 canlock(Lock *lk)
16 {
17 	if(tas(&lk->val))
18 		return 0;
19 	return 1;
20 }
21 
22 void
23 unlock(Lock *lk)
24 {
25 	lk->val = 0;
26 }
27