From 7ee126fdeaec9513bb0b97e075f3964b79c00582 Mon Sep 17 00:00:00 2001 From: Mitya Selivanov Date: Wed, 6 Sep 2023 02:37:27 +0200 Subject: time.h fixes; incomplete --- source/kit/mutex.h | 7 +------ source/kit/thread.win32.c | 3 ++- source/kit/time.h | 38 ++++++++++++++++++++++++++++++++++++++ source/kit_test/shared.inl.h | 40 ++++++++++++++++++++++++++++++++-------- 4 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 source/kit/time.h (limited to 'source') diff --git a/source/kit/mutex.h b/source/kit/mutex.h index d427ea6..254d5fa 100644 --- a/source/kit/mutex.h +++ b/source/kit/mutex.h @@ -7,12 +7,7 @@ # endif # include "thread_defs.h" - -# include - -# ifndef TIME_UTC -# define TIME_UTC 1 -# endif +# include "time.h" # if !defined(_WIN32) || defined(__CYGWIN__) # include diff --git a/source/kit/thread.win32.c b/source/kit/thread.win32.c index f8542f7..c4b6f15 100644 --- a/source/kit/thread.win32.c +++ b/source/kit/thread.win32.c @@ -143,7 +143,8 @@ static void impl_tss_dtor_invoke(void) { int i; for (i = 0; i < EMULATED_THREADS_TSS_DTOR_SLOTNUM; i++) { if (impl_tss_dtor_tbl[i].dtor) { - void *val = (void *) (size_t) tss_get(impl_tss_dtor_tbl[i].key); + void *val = (void *) (size_t) TlsGetValue( + impl_tss_dtor_tbl[i].key); if (val) (impl_tss_dtor_tbl[i].dtor)(val); } diff --git a/source/kit/time.h b/source/kit/time.h new file mode 100644 index 0000000..af36211 --- /dev/null +++ b/source/kit/time.h @@ -0,0 +1,38 @@ +#ifndef KIT_TIME_H +#define KIT_TIME_H + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#include + +#ifndef TIME_UTC +# define TIME_UTC 1 + +struct timespec { + time_t tv_sec; + long tv_nsec; +}; + +# if defined(_WIN32) && !defined(__CYGWIN__) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN 1 +# endif +# include + +static int timespec_get(struct timespec *ts, int base) { + // TODO + // Windows implementation. + // +} +# else +static int timespec_get(struct timespec *ts, int base) { + // TODO + // Posix implementation. + // +} +# endif +#endif + +#endif diff --git a/source/kit_test/shared.inl.h b/source/kit_test/shared.inl.h index 90efcd3..f80f7ff 100644 --- a/source/kit_test/shared.inl.h +++ b/source/kit_test/shared.inl.h @@ -1,20 +1,44 @@ #ifndef KIT_TEST_SHARED_INL_H #define KIT_TEST_SHARED_INL_H -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif +// kit/time.h +// +#ifndef KIT_TIME_H +# define KIT_TIME_H + +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif + +# include + +# ifndef TIME_UTC +# define TIME_UTC 1 + +struct timespec { + time_t tv_sec; + long tv_nsec; +}; + +# if defined(_WIN32) && !defined(__CYGWIN__) +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN 1 +# endif +# include + +static int timespec_get(struct timespec *ts, int base) { } +# else +static int timespec_get(struct timespec *ts, int base) { } +# endif +# endif + +#endif // kit/time.h #include #include #include #include #include -#include - -#ifndef TIME_UTC -# define TIME_UTC 1 -#endif enum { white, blue, light, yellow, red, green }; -- cgit v1.2.3