gpVM8086_State->SI = Regs->esi; gpVM8086_State->DI = Regs->edi;
gpVM8086_State->DS = Regs->ds; gpVM8086_State->ES = Regs->es;
gpVM8086_State = NULL;
- // Ensure the caller wakes
- //while(Threads_WakeTID(gVM8086_CallingThread) == -EALREADY)
- // Threads_Yield();
+ // Wake the caller
+ Threads_WakeTID(gVM8086_CallingThread);
}
//Log_Log("VM8086", "Waiting for something to do");
gpVM8086_State = State;
gVM8086_CallingThread = Threads_GetTID();
Threads_WakeTID( gVM8086_WorkerPID );
- while( gpVM8086_State != NULL )
- Threads_Yield();
+ Threads_Sleep();
+ while( gpVM8086_State != NULL ) Threads_Sleep();
Mutex_Release( &glVM8086_Process );
}