commit 6c5e847b1af42518beaff2b04bf35fa29c862d73
parent e39d66ffd605d087f62b60bb1887c37eb5a0487a
Author: vaplv <vaplv@free.fr>
Date: Sun, 9 Feb 2014 16:51:45 +0100
Add support of the i686 mingw toolchain
Fix clock_time compilation on MinGW 32Bits
Diffstat:
4 files changed, 33 insertions(+), 17 deletions(-)
diff --git a/src/clock_time.c b/src/clock_time.c
@@ -1,7 +1,13 @@
#define _POSIX_C_SOURCE 200112L
+#include "rsys.h"
+
+#if defined(MINGW) && defined(ARCH_32BITS)
+ #include <Windows.h>
+#else
+ #include <time.h>
+#endif
#include "clock_time.h"
-#include <time.h>
#include <string.h>
#define TIME_TO_NSEC(Time) ((Time)->nsec + (Time)->sec * 1000000000L)
@@ -15,26 +21,31 @@
void
time_current(struct time* t)
{
+#if defined(MINGW) && defined(ARCH_32BITS)
+ LARGE_INTEGER time, tmp;
+ BOOL b ;
+ ASSERT(t);
+
+ QueryPerformanceCounter(&time);
+ b = QueryPerformanceFrequency(&tmp);
+ ASSERT(b);
+
+ t->nsec = (int64_t)((double)time.QuadPart*1000000000.0/(double)tmp.QuadPart);
+ t->sec = t->nsec / 1000000000;
+ t->nsec = t->nsec - t->sec * 1000000000;
+#else
struct timespec time;
- int err = 0; (void) err;
+ int err = 0; (void)err;
ASSERT(t);
err = clock_gettime(CLOCK_REALTIME, &time);
ASSERT(err == 0);
t->sec = (int64_t)time.tv_sec;
t->nsec = (int64_t)time.tv_nsec;
+#endif
}
void
-time_sleep(const struct time* t)
-{
- struct timespec time;
- time.tv_sec = (time_t)t->sec;
- time.tv_nsec = (long)t->nsec;
- clock_nanosleep(CLOCK_REALTIME, 0, &time, NULL);
-}
-
-void
time_sub(struct time* res, const struct time* a, const struct time* b)
{
ASSERT(res && a && b);
diff --git a/src/clock_time.h b/src/clock_time.h
@@ -28,10 +28,6 @@ time_current
(struct time* time);
RSYS_API void
-time_sleep
- (const struct time* time);
-
-RSYS_API void
time_sub
(struct time* res,
const struct time* a,
diff --git a/src/rsys.h b/src/rsys.h
@@ -34,6 +34,15 @@
#endif
/*******************************************************************************
+ * Architecture
+ ******************************************************************************/
+#if defined(__LP64__)
+ #define ARCH_64BITS
+#else
+ #define ARCH_32BITS
+#endif
+
+/*******************************************************************************
* Symbol visibility
******************************************************************************/
#if defined(COMPILER_GCC)
diff --git a/src/test_signal.c b/src/test_signal.c
@@ -48,7 +48,7 @@ sig3_func(int i, float f, char c, void* data)
{
NCHECK(data, NULL);
CHECK(i, 3);
- CHECK(f, 3.14159f);
+ CHECK(f, 4.0f);
CHECK(c, 'a');
*(uint32_t*)data = 0xDECAFBAD;
}
@@ -150,7 +150,7 @@ main(int argc, char** argv)
CLBK_SETUP(&clbk3, &sig3_func, &clbk_data);
SIG_CONNECT_CLBK(&signals[SIG3], &clbk3);
clbk_data = 0;
- SIG_BROADCAST(&signals[SIG3], clbk3_T, ARG3(3, 3.14159f, 'a'));
+ SIG_BROADCAST(&signals[SIG3], clbk3_T, ARG3(3, 4.0f, 'a'));
CHECK(clbk_data, 0xDECAFBAD);
CHECK(MEM_ALLOCATED_SIZE(&mem_default_allocator), 0);