From 18f03af0c4eec5690eb0f8c3390c3b6e3bc4de69 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Tue, 1 Dec 2009 18:45:39 +0100 Subject: [PATCH] Updated ul_htimer callback data type to be portable to 64 bit Windows. The 64-bit Windows use LLP64 where pointer value does not fit in long type variable. On the other hand, on 8 and 16 bit machines uintptr_t can be smaller than long so conditional type definition is used now. Signed-off-by: Pavel Pisa --- ulut/ul_htimchk.c | 8 ++++---- ulut/ul_htimdefs.h | 12 +++++++++++- ulut/ul_htimer.h | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ulut/ul_htimchk.c b/ulut/ul_htimchk.c index 2b485e6..1349e40 100644 --- a/ulut/ul_htimchk.c +++ b/ulut/ul_htimchk.c @@ -56,7 +56,7 @@ void timing_test(void) for(i=0;ifunction=test_htimer_fnc; - timer->data=i; + timer->data=(ul_htimer_fnc_data_t)i; ul_htimer_set_expire(timer,actual_time + (i&~1)*500); if(ul_htimer_add(root_htimer, timer)<0) printf("ul_htimer_add is buggy\n"); diff --git a/ulut/ul_htimdefs.h b/ulut/ul_htimdefs.h index 1df7047..ed2d4e8 100644 --- a/ulut/ul_htimdefs.h +++ b/ulut/ul_htimdefs.h @@ -2,6 +2,9 @@ #define _UL_HTIMDEFS_H #include "ul_utdefs.h" +#ifdef _WIN64 +#include +#endif #ifdef __cplusplus extern "C" { @@ -47,7 +50,14 @@ ul_htimer_cmp_fnc(const ul_htim_time_t *a, const ul_htim_time_t *b) /* Additional, user defined fields for ul_htimer_t structure */ #define UL_HTIMER_USER_FIELDS -typedef void (ul_htimer_fnc_t)(unsigned long data) UL_ATTR_REENTRANT; +#ifdef _WIN64 +typedef uintptr_t ul_htimer_fnc_data_t; +#else +typedef unsigned long ul_htimer_fnc_data_t; +#endif +/*typedef void *ul_htimer_fnc_data_t;*/ + +typedef void (ul_htimer_fnc_t)(ul_htimer_fnc_data_t data) UL_ATTR_REENTRANT; /* The wrapper for ul_htimer_run_expired */ #define UL_HTIMER_FNC_CALL(queue, timer, pact_time) \ diff --git a/ulut/ul_htimer.h b/ulut/ul_htimer.h index fb26059..ce37d60 100644 --- a/ulut/ul_htimer.h +++ b/ulut/ul_htimer.h @@ -198,7 +198,7 @@ int cust_prefix##_next_expire(cust_queue_t *queue, ul_htim_time_t *pnext_time)\ typedef struct ul_htimer { ul_htim_node_t htim; ul_htimer_fnc_t *function; - unsigned long data; + ul_htimer_fnc_data_t data; UL_HTIMER_USER_FIELDS } ul_htimer_t; -- 2.39.2