etisserant@49: #include etisserant@49: #include etisserant@49: #include etisserant@49: #include etisserant@49: etisserant@49: void timer_notify() etisserant@49: { etisserant@49: struct _timeb timebuffer; etisserant@49: etisserant@49: _ftime( &timebuffer ); etisserant@49: CURRENT_TIME.tv_sec = timebuffer.time; etisserant@49: CURRENT_TIME.tv_nsec = timebuffer.millitm * 1000000 etisserant@49: __run(); etisserant@49: } etisserant@49: etisserant@49: int main(int argc,char **argv) etisserant@49: { etisserant@49: HANDLE hTimer = NULL; etisserant@49: LARGE_INTEGER liDueTime; etisserant@49: etisserant@49: liDueTime.QuadPart = -10000 * maxval(common_ticktime__,1);; etisserant@49: etisserant@49: // Create a waitable timer. etisserant@49: hTimer = CreateWaitableTimer(NULL, TRUE, "WaitableTimer"); etisserant@49: if (NULL == hTimer) etisserant@49: { etisserant@49: printf("CreateWaitableTimer failed (%d)\n", GetLastError()); etisserant@49: return 1; etisserant@49: } etisserant@49: etisserant@57: if( __init(argc,argv) == 0 ){ etisserant@49: etisserant@57: // Set a timer etisserant@57: if (!SetWaitableTimer(hTimer, &liDueTime, common_ticktime__, NULL, NULL, 0)) etisserant@57: { etisserant@57: printf("SetWaitableTimer failed (%d)\n", GetLastError()); etisserant@57: return 2; etisserant@57: } etisserant@57: etisserant@57: while(1){ etisserant@57: // Wait for the timer. etisserant@57: if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0) etisserant@57: { etisserant@57: printf("WaitForSingleObject failed (%d)\n", GetLastError()); etisserant@57: break; etisserant@57: } etisserant@57: timer_notify(); etisserant@57: } etisserant@49: } etisserant@49: __cleanup(); etisserant@49: etisserant@49: return 0; etisserant@49: }