Don't use a static mtid

Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
This commit is contained in:
Adrien Gallouët
2020-03-26 22:31:33 +00:00
parent c426cef08b
commit 71d16f25ff

12
mud.c
View File

@@ -161,6 +161,9 @@ struct mud {
uint64_t window;
uint64_t window_time;
uint64_t base_time;
#if defined __APPLE__
mach_timebase_info_data_t mtid;
#endif
};
static int
@@ -306,11 +309,8 @@ static uint64_t
mud_now(struct mud *mud)
{
#if defined __APPLE__
static mach_timebase_info_data_t mtid;
if (!mtid.denom)
mach_timebase_info(&mtid);
return MUD_TIME_MASK(mud->base_time
+ (mach_absolute_time() * mtid.numer / mtid.denom)
+ (mach_absolute_time() * mud->mtid.numer / mud->mtid.denom)
/ 1000ULL);
#elif defined CLOCK_MONOTONIC
struct timespec tv;
@@ -938,6 +938,10 @@ mud_create(struct sockaddr *addr)
memcpy(&mud->addr, addr, addrlen);
#if defined __APPLE__
mach_timebase_info(&mud->mtid);
#endif
uint64_t now = mud_now(mud);
uint64_t base_time = mud_time();