rsys

Basic data structures and low-level features
git clone git://git.meso-star.fr/rsys.git
Log | Files | Refs | README | LICENSE

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:
Msrc/clock_time.c | 33++++++++++++++++++++++-----------
Msrc/clock_time.h | 4----
Msrc/rsys.h | 9+++++++++
Msrc/test_signal.c | 4++--
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);