48 r = WaitForSingleObjectEx(timerCommArea.
event, waittime,
FALSE);
49 if (r == WAIT_OBJECT_0)
52 EnterCriticalSection(&timerCommArea.
crit_sec);
59 waittime = (timerCommArea.
value.
it_value.tv_usec + 999) / 1000 +
62 ResetEvent(timerCommArea.
event);
63 LeaveCriticalSection(&timerCommArea.
crit_sec);
65 else if (r == WAIT_TIMEOUT)
103 InitializeCriticalSection(&timerCommArea.
crit_sec);
113 EnterCriticalSection(&timerCommArea.
crit_sec);
115 *ovalue = timerCommArea.
value;
117 LeaveCriticalSection(&timerCommArea.
crit_sec);
118 SetEvent(timerCommArea.
event);
#define MemSet(start, val, len)
static DWORD WINAPI pg_timer_thread(LPVOID param)
static timerCA timerCommArea
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue)
#define ereport(elevel, rest)
int errmsg_internal(const char *fmt,...)
#define Assert(condition)
void pg_queue_signal(int signum)
CRITICAL_SECTION crit_sec
struct timeval it_interval
static HANDLE timerThreadHandle