eal/windows: add clock function

Add clock_gettime() on Windows in rte_os_shim.h.

Signed-off-by: Jie Zhou <jizh@linux.microsoft.com>
Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
This commit is contained in:
Jie Zhou 2021-06-29 13:50:17 -07:00 committed by Andrew Rybchenko
parent 3d2fcb0e0a
commit 799a5b9aca

View File

@ -77,4 +77,37 @@ rte_timespec_get(struct timespec *now, int base)
#endif /* RTE_TOOLCHAIN_GCC */
/* Identifier for system-wide realtime clock. */
#define CLOCK_REALTIME 0
/* Monotonic system-wide clock. */
#define CLOCK_MONOTONIC 1
typedef int clockid_t;
static inline int
rte_clock_gettime(clockid_t clock_id, struct timespec *tp)
{
const int NS_PER_SEC = 1E9;
LARGE_INTEGER pf, pc;
LONGLONG nsec;
switch (clock_id) {
case CLOCK_REALTIME:
if (timespec_get(tp, TIME_UTC) != TIME_UTC)
return -1;
return 0;
case CLOCK_MONOTONIC:
QueryPerformanceFrequency(&pf);
QueryPerformanceCounter(&pc);
nsec = pc.QuadPart * NS_PER_SEC / pf.QuadPart;
tp->tv_sec = nsec / NS_PER_SEC;
tp->tv_nsec = nsec - tp->tv_sec * NS_PER_SEC;
return 0;
default:
return -1;
}
}
#define clock_gettime(clock_id, tp) rte_clock_gettime(clock_id, tp)
#endif /* _RTE_OS_SHIM_ */