Linux: Fix compilation error on non-x86 platform by providing generic implementation for jent_get_nstime function

This commit is contained in:
Mounir IDRASSI 2019-10-28 23:16:15 +01:00
parent 3fa636d477
commit afe6b2f45b
No known key found for this signature in database
GPG Key ID: 02C30AE90FAE4A6F

View File

@ -75,6 +75,8 @@ static VC_INLINE void jent_get_nstime(uint64 *out)
#else #else
#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X64
/* taken from Linux kernel */ /* taken from Linux kernel */
#if CRYPTOPP_BOOL_X64 #if CRYPTOPP_BOOL_X64
#define DECLARE_ARGS(val, low, high) unsigned low, high #define DECLARE_ARGS(val, low, high) unsigned low, high
@ -93,6 +95,29 @@ VC_INLINE void jent_get_nstime(uint64 *out)
*out = EAX_EDX_VAL(val, low, high); *out = EAX_EDX_VAL(val, low, high);
} }
#else
#include <time.h>
VC_INLINE void jent_get_nstime(uint64 *out)
{
/* we could use CLOCK_MONOTONIC(_RAW), but with CLOCK_REALTIME
* we get some nice extra entropy once in a while from the NTP actions
* that we want to use as well... though, we do not rely on that
* extra little entropy */
uint64_t tmp = 0;
struct timespec time;
if (clock_gettime(CLOCK_REALTIME, &time) == 0)
{
tmp = time.tv_sec;
tmp = tmp << 32;
tmp = tmp | time.tv_nsec;
}
*out = tmp;
}
#endif
#endif #endif
#ifdef _MSC_VER #ifdef _MSC_VER