blob: 0a69b3e3e019b4c241bc769a94acf3797bd24f35 (
plain) (
tree)
|
|
#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(pthread_t self)
{
a_inc(vmlock);
}
void __vm_unlock(pthread_t self)
{
if (a_fetch_add(vmlock, -1)==1 && vmlock[1])
__wake(vmlock, -1, 1);
}
|