-#include <pthread.h>
+#include "stg_timer.h"
+
+#include "stg/common.h"
#include <ctime>
#include <cstring>
+#include <csignal>
+
+#include <pthread.h>
-#include "common.h"
+void * StgTimer(void *);
static int nonstop;
static pthread_t thrStgTimer;
static bool isTimerRunning = false;
volatile time_t stgTime;
+#ifdef STG_TIMER_DEBUG
const int TIME_SPEED = 1;
/*
1 - 1x speed
1 - start before new day (3 min before) 29.11.2005 23:57:00
2 - start before new month (3 min before) 30.11.2005 23:57:00
*/
+#endif
//-----------------------------------------------------------------------------
void * StgTimer(void *)
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
struct timespec ts = {0, 1000000000 / TIME_SPEED};
nanosleep(&ts, NULL);
- //usleep(1000000 / TIME_SPEED);
stgTime++;
#else
struct timespec ts = {0, 500000000};
nanosleep(&ts, NULL);
- //usleep(500000);
stgTime = time(NULL);
#endif
}
isTimerRunning = false;
if (a == 0)
- if (pthread_create(&thrStgTimer, NULL, StgTimer, NULL))
+ if (pthread_create(&thrStgTimer, NULL, &StgTimer, NULL))
{
isTimerRunning = false;
return -1;
int stgUsleep(unsigned long t)
{
#ifdef STG_TIMER_DEBUG
-struct timespec ts = {(t / TIME_SPEED) / 1000000, ((t / TIME_SPEED) % 1000000) * 1000};
+struct timespec ts = {static_cast<time_t>((t / TIME_SPEED) / 1000000), static_cast<long>(((t / TIME_SPEED) % 1000000) * 1000)};
return nanosleep(&ts, NULL);
-//return usleep(t / TIME_SPEED);
#else
-struct timespec ts = {t / 1000000, (t % 1000000) * 1000};
+struct timespec ts = {static_cast<time_t>(t / 1000000), static_cast<long>((t % 1000000) * 1000)};
return nanosleep(&ts, NULL);
-//return usleep(t);
#endif
}
//-----------------------------------------------------------------------------