implement gettime_secs for Windows (_MSC_VER) in tests/api.c

pull/6733/head
gojimmypi 2023-08-25 18:30:05 -07:00
parent 5b5e66b55f
commit 321f74869a
1 changed files with 21 additions and 3 deletions

View File

@ -66255,10 +66255,28 @@ static const char* apitest_res_string(int res)
#ifndef WOLFSSL_UNIT_TEST_NO_TIMING
static double gettime_secs(void)
{
struct timeval tv;
LIBCALL_CHECK_RET(gettimeofday(&tv, 0));
#if defined(_MSC_VER) && defined(_WIN32)
{
/* there's no gettimeofday for Windows, so we'll use system time */
#define EPOCH_DIFF 11644473600LL
FILETIME currentFileTime;
GetSystemTimePreciseAsFileTime(&currentFileTime);
return (double)tv.tv_sec + (double)tv.tv_usec / 1000000;
ULARGE_INTEGER uli = { 0, 0 };
uli.LowPart = currentFileTime.dwLowDateTime;
uli.HighPart = currentFileTime.dwHighDateTime;
/* Convert to seconds since Unix epoch */
return (double)((uli.QuadPart - EPOCH_DIFF * 10000000) / 10000000);
}
#else
{
struct timeval tv;
LIBCALL_CHECK_RET(gettimeofday(&tv, 0));
return (double)tv.tv_sec + (double)tv.tv_usec / 1000000;
}
#endif
}
#endif