19,502
社区成员
发帖
与我相关
我的任务
分享
Timeout = 5000;
while (!IsTerminated())
{
dwWaitStatus = WaitForSingleObject(m_CableEvent, Timeout);
switch(dwWaitStatus)
{
case WAIT_OBJECT_0:
RETAILMSG(ZONE_INT, (TEXT("CableIST get event \r\n")));
CableDetectHandle();
InterruptDone(m_dwCableSysIntr);
break;
case WAIT_TIMEOUT:
RETAILMSG(ZONE_INT, (TEXT("CableIST timeout \r\n")));
CableDetectTimeoutHandle();
break;
default:
RETAILMSG(ZONE_INT, (TEXT("CableIST Wait object Error\r\n")));
}
}
void
StallExecution (DWORD dwMicroSec)
{
if (g_fStallCounterSet) {
while (dwMicroSec-- > 0) {
StallOneMicrosecond();
}
return;
} else if (dwMicroSec) {
LARGE_INTEGER liStart, liEnd, liStallCount, liFreq;
//DEBUGMSG (1, (TEXT("Ceddk!StallExecution: Stall counter (%d) not set\r\n"), g_StallCounter));
// Call QueryPerformanceFrequency every time for dynamic frequency change support
QueryPerformanceFrequency (&liFreq);
liStallCount.QuadPart = ((liFreq.QuadPart * dwMicroSec - 1) / 1000000) + 1; // always run up
QueryPerformanceCounter(&liStart);
do {
QueryPerformanceCounter(&liEnd);
} while ( (liEnd.QuadPart - liStart.QuadPart) <= liStallCount.QuadPart);
}
}