Commit 4f817bed authored by Adam Wujek's avatar Adam Wujek 💬

userspace/wrsw_hal: replace gettimeofday() with monotinic clock_gettime

Problem simillar to bug 1164.

Check commit:
userspace/snmpd: bugfix 1164, replace time() with monotinic version
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent 13f435d4
......@@ -4,6 +4,7 @@
#include <stdio.h>
#include <stdint.h>
#include <sys/time.h>
#include "libwr/util.h"
typedef struct {
int repeat;
......@@ -11,35 +12,26 @@ typedef struct {
uint64_t timeout;
} timeout_t;
static inline uint64_t tm_get_tics(void)
{
struct timezone tz = { 0, 0 };
struct timeval tv;
gettimeofday(&tv, &tz);
return (uint64_t) tv.tv_sec * 1000000ULL + (uint64_t) tv.tv_usec;
}
static inline int tmo_init(timeout_t * tmo, uint32_t milliseconds, int repeat)
{
tmo->repeat = repeat;
tmo->start_tics = tm_get_tics();
tmo->start_tics = get_monotonic_tics();
tmo->timeout = (uint64_t) milliseconds *1000ULL;
return 0;
}
static inline int tmo_restart(timeout_t * tmo)
{
tmo->start_tics = tm_get_tics();
tmo->start_tics = get_monotonic_tics();
return 0;
}
static inline int tmo_expired(timeout_t * tmo)
{
int expired = (tm_get_tics() - tmo->start_tics > tmo->timeout);
int expired = (get_monotonic_tics() - tmo->start_tics > tmo->timeout);
if (tmo->repeat && expired)
tmo->start_tics = tm_get_tics();
tmo->start_tics = get_monotonic_tics();
return expired;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment