#include "pthread_impl.h" | |
static volatile int vmlock[2]; | |
void __vm_wait() { | |
int tmp; | |
while ((tmp = vmlock[0])) | |
__wait(vmlock, vmlock + 1, tmp, 1); | |
} | |
void __vm_lock() { | |
a_inc(vmlock); | |
} | |
void __vm_unlock() { | |
if (a_fetch_add(vmlock, -1) == 1 && vmlock[1]) | |
__wake(vmlock, -1, 1); | |
} |