1*c9945492SAndroid Build Coastguard Worker #include "pthread_impl.h" 2*c9945492SAndroid Build Coastguard Worker #include "fork_impl.h" 3*c9945492SAndroid Build Coastguard Worker 4*c9945492SAndroid Build Coastguard Worker static volatile int vmlock[2]; 5*c9945492SAndroid Build Coastguard Worker volatile int *const __vmlock_lockptr = vmlock; 6*c9945492SAndroid Build Coastguard Worker __vm_wait()7*c9945492SAndroid Build Coastguard Workervoid __vm_wait() 8*c9945492SAndroid Build Coastguard Worker { 9*c9945492SAndroid Build Coastguard Worker int tmp; 10*c9945492SAndroid Build Coastguard Worker while ((tmp=vmlock[0])) 11*c9945492SAndroid Build Coastguard Worker __wait(vmlock, vmlock+1, tmp, 1); 12*c9945492SAndroid Build Coastguard Worker } 13*c9945492SAndroid Build Coastguard Worker __vm_lock()14*c9945492SAndroid Build Coastguard Workervoid __vm_lock() 15*c9945492SAndroid Build Coastguard Worker { 16*c9945492SAndroid Build Coastguard Worker a_inc(vmlock); 17*c9945492SAndroid Build Coastguard Worker } 18*c9945492SAndroid Build Coastguard Worker __vm_unlock()19*c9945492SAndroid Build Coastguard Workervoid __vm_unlock() 20*c9945492SAndroid Build Coastguard Worker { 21*c9945492SAndroid Build Coastguard Worker if (a_fetch_add(vmlock, -1)==1 && vmlock[1]) 22*c9945492SAndroid Build Coastguard Worker __wake(vmlock, -1, 1); 23*c9945492SAndroid Build Coastguard Worker } 24