From: Pavel Pisa Date: Tue, 1 Dec 2009 17:45:39 +0000 (+0100) Subject: Updated ul_htimer callback data type to be portable to 64 bit Windows. X-Git-Tag: ul_drv-0.8.0-release^0 X-Git-Url: https://rtime.felk.cvut.cz/gitweb/ulut.git/commitdiff_plain/18f03af0c4eec5690eb0f8c3390c3b6e3bc4de69?hp=1bfcfd9393da8d8742d612d4a4eb65d1748655ed 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 --- 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;