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