-#include <unistd.h>
#include <pthread.h>
+#include <ctime>
#include <cstring>
+#include <csignal>
-#include "common.h"
+#include "stg/common.h"
static int nonstop;
static pthread_t thrStgTimer;
stgTime = mktime(<);
break;
}
+#else
+stgTime = time(NULL);
#endif
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
nonstop = 1;
isTimerRunning = true;
while (nonstop)
{
#ifdef STG_TIMER_DEBUG
- usleep(1000000 / TIME_SPEED);
+ struct timespec ts = {0, 1000000000 / TIME_SPEED};
+ nanosleep(&ts, NULL);
stgTime++;
#else
+ struct timespec ts = {0, 500000000};
+ nanosleep(&ts, NULL);
stgTime = time(NULL);
- usleep(500000);
#endif
}
isTimerRunning = false;
int stgUsleep(unsigned long t)
{
#ifdef STG_TIMER_DEBUG
-return usleep(t / TIME_SPEED);
+struct timespec ts = {(t / TIME_SPEED) / 1000000, ((t / TIME_SPEED) % 1000000) * 1000};
+return nanosleep(&ts, NULL);
#else
-return usleep(t);
+struct timespec ts = {t / 1000000, (t % 1000000) * 1000};
+return nanosleep(&ts, NULL);
#endif
}
//-----------------------------------------------------------------------------
stgUsleep(200000);
}
//-----------------------------------------------------------------------------
-
-