| #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); | |
| } |