diff options
author | ianh <ianh@13f79535-47bb-0310-9956-ffa450edef68> | 2002-02-19 23:15:40 +0000 |
---|---|---|
committer | ianh <ianh@13f79535-47bb-0310-9956-ffa450edef68> | 2002-02-19 23:15:40 +0000 |
commit | 6e81a9cc203db8d97fdccc356c8840c764356976 (patch) | |
tree | 43089f527b01d8d3c44eb189f98cc8e54c8de602 /atomic | |
parent | 84022ca36e52b886bec04eab88f419b0d59aa503 (diff) | |
download | libapr-6e81a9cc203db8d97fdccc356c8840c764356976.tar.gz |
re-introduce the CAS apr call.
doxygenize the header
testing is now harder
PR:
Obtained from:
Submitted by:
Reviewed by:
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@63027 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'atomic')
-rw-r--r-- | atomic/unix/apr_atomic.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/atomic/unix/apr_atomic.c b/atomic/unix/apr_atomic.c index 3f6be50e1..2cae91b93 100644 --- a/atomic/unix/apr_atomic.c +++ b/atomic/unix/apr_atomic.c @@ -58,10 +58,10 @@ #include "apr_thread_mutex.h" #include "apr_atomic.h" -#if defined(APR_ATOMIC_NEED_DEFAULT) - #if APR_HAS_THREADS +#if defined(APR_ATOMIC_NEED_DEFAULT) + #define NUM_ATOMIC_HASH 7 /* shift by 2 to get rid of alignment issues */ #define ATOMIC_HASH(x) (int)(((long)x>>2)%NUM_ATOMIC_HASH) @@ -79,10 +79,10 @@ apr_status_t apr_atomic_init(apr_pool_t *p ) } return APR_SUCCESS; } -apr_uint32_t apr_atomic_add(volatile apr_atomic_t *mem, long val) +apr_uint32_t apr_atomic_add(volatile apr_atomic_t *mem, apr_uint32_t val) { apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - long prev; + apr_uint32_t prev; if (apr_thread_mutex_lock(lock) == APR_SUCCESS) { prev = *mem; @@ -90,12 +90,13 @@ apr_uint32_t apr_atomic_add(volatile apr_atomic_t *mem, long val) apr_thread_mutex_unlock(lock); return prev; } + printf("debug no workee\n"); return *mem; } -apr_uint32_t apr_atomic_set(volatile apr_atomic_t *mem, long val) +apr_uint32_t apr_atomic_set(volatile apr_atomic_t *mem, apr_uint32_t val) { apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - long prev; + apr_uint32_t prev; if (apr_thread_mutex_lock(lock) == APR_SUCCESS) { prev = *mem; @@ -109,7 +110,7 @@ apr_uint32_t apr_atomic_set(volatile apr_atomic_t *mem, long val) apr_uint32_t apr_atomic_inc( volatile apr_uint32_t *mem) { apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - long prev; + apr_uint32_t prev; if (apr_thread_mutex_lock(lock) == APR_SUCCESS) { prev = *mem; @@ -122,7 +123,7 @@ apr_uint32_t apr_atomic_inc( volatile apr_uint32_t *mem) apr_uint32_t apr_atomic_dec(volatile apr_atomic_t *mem) { apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - long prev; + apr_uint32_t prev; if (apr_thread_mutex_lock(lock) == APR_SUCCESS) { prev = *mem; @@ -132,15 +133,13 @@ apr_uint32_t apr_atomic_dec(volatile apr_atomic_t *mem) } return *mem; } -#if 0 -/* - * linux doesn't have a easy to do this - * so comment it out for the moment - */ -apr_uint32_t apr_atomic_cas(volatile apr_atomic_t *mem,apr_uint32_t with, apr_uint32_t cmp) + +#if defined(APR_ATOMIC_NEED_CAS_DEFAULT) + +long apr_atomic_cas(volatile apr_atomic_t *mem,long with, long cmp) { apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - long prev; + apr_uint32_t prev; if (apr_thread_mutex_lock(lock) == APR_SUCCESS) { prev = *mem; @@ -152,7 +151,8 @@ apr_uint32_t apr_atomic_cas(volatile apr_atomic_t *mem,apr_uint32_t with, apr_ui } return *mem; } -#endif -#endif /* APR_HAS_THREADS */ +#endif /* APR_ATOMIC_NEED_CAS_DEFAULT */ #endif /* APR_ATOMIC_NEED_DEFAULT */ + +#endif /* APR_HAS_THREADS */ |