remove second ifdefs for windows timing by introducing ported version of clock_gettime

This commit is contained in:
Aydyn Tairov
2023-07-27 15:38:45 +01:00
parent 79933a8ab4
commit acf1e18e8f
3 changed files with 16 additions and 9 deletions
-6
View File
@@ -365,15 +365,9 @@ int argmax(float* v, int n) {
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
long time_in_ms() { long time_in_ms() {
#if defined _WIN32
// windows specific way to get time
return GetTickCount();
#else
// linux specific way to get time
struct timespec time; struct timespec time;
clock_gettime(CLOCK_REALTIME, &time); clock_gettime(CLOCK_REALTIME, &time);
return time.tv_sec * 1000 + time.tv_nsec / 1000000; return time.tv_sec * 1000 + time.tv_nsec / 1000000;
#endif
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
+8
View File
@@ -176,3 +176,11 @@ int munlock(const void *addr, size_t len)
return -1; return -1;
} }
// Portable clock_gettime function for Windows
int clock_gettime(int clk_id, struct timespec *tp) {
DWORD ticks = GetTickCount();
tp->tv_sec = ticks / 1000;
tp->tv_nsec = (ticks % 1000) * 1000000;
return 0;
}
+5
View File
@@ -3,6 +3,7 @@
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h> #include <windows.h>
#include <time.h>
// Below code is originally from mman-win32 // Below code is originally from mman-win32
@@ -47,12 +48,16 @@ extern "C" {
#define MS_SYNC 2 #define MS_SYNC 2
#define MS_INVALIDATE 4 #define MS_INVALIDATE 4
/* Flags for portable clock_gettime call. */
#define CLOCK_REALTIME 0
void* mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); void* mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off);
int munmap(void *addr, size_t len); int munmap(void *addr, size_t len);
int mprotect(void *addr, size_t len, int prot); int mprotect(void *addr, size_t len, int prot);
int msync(void *addr, size_t len, int flags); int msync(void *addr, size_t len, int flags);
int mlock(const void *addr, size_t len); int mlock(const void *addr, size_t len);
int munlock(const void *addr, size_t len); int munlock(const void *addr, size_t len);
int clock_gettime(int clk_id, struct timespec *tp);
#ifdef __cplusplus #ifdef __cplusplus
}; };