diff options
Diffstat (limited to 'atomic')
-rw-r--r-- | atomic/win32/apr_atomic64.c | 50 |
1 files changed, 11 insertions, 39 deletions
diff --git a/atomic/win32/apr_atomic64.c b/atomic/win32/apr_atomic64.c index a5acc945e..e2cd06d6c 100644 --- a/atomic/win32/apr_atomic64.c +++ b/atomic/win32/apr_atomic64.c @@ -18,55 +18,35 @@ #include "apr_atomic.h" #include "apr_thread_mutex.h" -APR_DECLARE(apr_uint64_t) apr_atomic_add64(volatile apr_uint64_t *mem, apr_uint64_t val) -{ -#if (defined(_M_IA64) || defined(_M_AMD64)) - return InterlockedExchangeAdd64(mem, val); -#else - return InterlockedExchangeAdd64((long *)mem, val); -#endif -} - /* Of course we want the 2's compliment of the unsigned value, val */ #ifdef _MSC_VER #pragma warning(disable: 4146) #endif +APR_DECLARE(apr_uint64_t) apr_atomic_add64(volatile apr_uint64_t *mem, apr_uint64_t val) +{ + return InterlockedExchangeAdd64((volatile LONG64 *)mem, val); +} + APR_DECLARE(void) apr_atomic_sub64(volatile apr_uint64_t *mem, apr_uint64_t val) { -#if (defined(_M_IA64) || defined(_M_AMD64)) - InterlockedExchangeAdd64(mem, -val); -#else - InterlockedExchangeAdd64((long *)mem, -val); -#endif + InterlockedExchangeAdd64((volatile LONG64 *)mem, -val); } APR_DECLARE(apr_uint64_t) apr_atomic_inc64(volatile apr_uint64_t *mem) { /* we return old value, win64 returns new value :( */ -#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) - return InterlockedIncrement64(mem) - 1; -#else - return InterlockedIncrement64((long *)mem) - 1; -#endif + return InterlockedIncrement64((volatile LONG64 *)mem) - 1; } APR_DECLARE(int) apr_atomic_dec64(volatile apr_uint64_t *mem) { -#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) - return InterlockedDecrement64(mem); -#else - return InterlockedDecrement64((long *)mem); -#endif + return !!InterlockedDecrement64((volatile LONG64 *)mem); } APR_DECLARE(void) apr_atomic_set64(volatile apr_uint64_t *mem, apr_uint64_t val) { -#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) - InterlockedExchange64(mem, val); -#else - InterlockedExchange64((long*)mem, val); -#endif + InterlockedExchange64((volatile LONG64 *)mem, val); } APR_DECLARE(apr_uint64_t) apr_atomic_read64(volatile apr_uint64_t *mem) @@ -77,18 +57,10 @@ APR_DECLARE(apr_uint64_t) apr_atomic_read64(volatile apr_uint64_t *mem) APR_DECLARE(apr_uint64_t) apr_atomic_cas64(volatile apr_uint64_t *mem, apr_uint64_t with, apr_uint64_t cmp) { -#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) - return InterlockedCompareExchange64(mem, with, cmp); -#else - return InterlockedCompareExchange64((long*)mem, with, cmp); -#endif + return InterlockedCompareExchange64((volatile LONG64 *)mem, with, cmp); } APR_DECLARE(apr_uint64_t) apr_atomic_xchg64(volatile apr_uint64_t *mem, apr_uint64_t val) { -#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) - return InterlockedExchange64(mem, val); -#else - return InterlockedExchange64((long *)mem, val); -#endif + return InterlockedExchange64((volatile LONG64 *)mem, val); } |