• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "pthread_impl.h"
2 #include "fork_impl.h"
3 
4 static volatile int vmlock[2];
5 volatile int *const __vmlock_lockptr = vmlock;
6 
7 #ifdef ENABLE_HWASAN
8 __attribute__((no_sanitize("hwaddress")))
9 #endif
__vm_wait()10 void __vm_wait()
11 {
12 	int tmp;
13 	while ((tmp=vmlock[0]))
14 		__wait(vmlock, vmlock+1, tmp, 1);
15 }
16 
__vm_lock()17 void __vm_lock()
18 {
19 	a_inc(vmlock);
20 }
21 
22 #ifdef ENABLE_HWASAN
23 __attribute__((no_sanitize("hwaddress")))
24 #endif
__vm_unlock()25 void __vm_unlock()
26 {
27 	if (a_fetch_add(vmlock, -1)==1 && vmlock[1])
28 		__wake(vmlock, -1, 1);
29 }
30