blob: f05fbe0bcfbc73362ba95882c394527d76bfd40e [file] [log] [blame]
#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);
}