diff options
author | ylavic <ylavic@13f79535-47bb-0310-9956-ffa450edef68> | 2017-04-06 19:53:50 +0000 |
---|---|---|
committer | ylavic <ylavic@13f79535-47bb-0310-9956-ffa450edef68> | 2017-04-06 19:53:50 +0000 |
commit | e895bab57c9286486d261473026ac2854d0cb0be (patch) | |
tree | 2745bff5c35da8e3b25daacb5952c672b699f419 /locks/unix | |
parent | dbb764d5056a40787a14b1e1809156b5e74fb929 (diff) | |
download | libapr-e895bab57c9286486d261473026ac2854d0cb0be.tar.gz |
locks: follow up to r1790330.
No functional change, more helpers/macros to help identify struct
proc_pthread_mutex_t members.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@1790444 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'locks/unix')
-rw-r--r-- | locks/unix/proc_mutex.c | 52 |
1 files changed, 28 insertions, 24 deletions
diff --git a/locks/unix/proc_mutex.c b/locks/unix/proc_mutex.c index fa68440c2..4ad6c412e 100644 --- a/locks/unix/proc_mutex.c +++ b/locks/unix/proc_mutex.c @@ -494,23 +494,27 @@ static const apr_proc_mutex_unix_lock_methods_t mutex_sysv_methods = * destroy it. */ typedef struct { +#define proc_pthread_cast(m) \ + ((proc_pthread_mutex_t *)(m)->os.pthread_interproc) pthread_mutex_t mutex; +#define proc_pthread_mutex(m) \ + (proc_pthread_cast(m)->mutex) #if APR_USE_PROC_PTHREAD_MUTEX_COND pthread_cond_t cond; - apr_int32_t cond_locked; - apr_uint32_t cond_num_waiters; #define proc_pthread_mutex_cond(m) \ - (((proc_pthread_mutex_t *)(m)->os.pthread_interproc)->cond) + (proc_pthread_cast(m)->cond) + apr_int32_t cond_locked; #define proc_pthread_mutex_cond_locked(m) \ - (((proc_pthread_mutex_t *)(m)->os.pthread_interproc)->cond_locked) + (proc_pthread_cast(m)->cond_locked) + apr_uint32_t cond_num_waiters; #define proc_pthread_mutex_cond_num_waiters(m) \ - (((proc_pthread_mutex_t *)(m)->os.pthread_interproc)->cond_num_waiters) + (proc_pthread_cast(m)->cond_num_waiters) #endif /* APR_USE_PROC_PTHREAD_MUTEX_COND */ apr_uint32_t refcount; +#define proc_pthread_mutex_refcount(m) \ + (proc_pthread_cast(m)->refcount) } proc_pthread_mutex_t; -#define proc_pthread_mutex_refcount(m) \ - (((proc_pthread_mutex_t *)(m)->os.pthread_interproc)->refcount) static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, apr_time_t timeout, @@ -545,7 +549,7 @@ static apr_status_t proc_pthread_mutex_unref(void *mutex_) else #endif /* APR_USE_PROC_PTHREAD_MUTEX_COND */ if (mutex->curr_locked == 1) { - if ((rv = pthread_mutex_unlock(mutex->os.pthread_interproc))) { + if ((rv = pthread_mutex_unlock(&proc_pthread_mutex(mutex)))) { #ifdef HAVE_ZOS_PTHREADS rv = errno; #endif @@ -563,7 +567,7 @@ static apr_status_t proc_pthread_mutex_unref(void *mutex_) } #endif /* APR_USE_PROC_PTHREAD_MUTEX_COND */ - if ((rv = pthread_mutex_destroy(mutex->os.pthread_interproc))) { + if ((rv = pthread_mutex_destroy(&proc_pthread_mutex(mutex)))) { #ifdef HAVE_ZOS_PTHREADS rv = errno; #endif @@ -655,7 +659,7 @@ static apr_status_t proc_mutex_pthread_create(apr_proc_mutex_t *new_mutex, } #endif /* HAVE_PTHREAD_MUTEX_ROBUST */ - if ((rv = pthread_mutex_init(new_mutex->os.pthread_interproc, &mattr))) { + if ((rv = pthread_mutex_init(&proc_pthread_mutex(new_mutex), &mattr))) { #ifdef HAVE_ZOS_PTHREADS rv = errno; #endif @@ -716,7 +720,7 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, #if APR_USE_PROC_PTHREAD_MUTEX_COND if (proc_pthread_mutex_cond_locked(mutex) != -1) { - if ((rv = pthread_mutex_lock(mutex->os.pthread_interproc))) { + if ((rv = pthread_mutex_lock(&proc_pthread_mutex(mutex)))) { #ifdef HAVE_ZOS_PTHREADS rv = errno; #endif @@ -724,7 +728,7 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, /* Okay, our owner died. Let's try to make it consistent again. */ if (rv == EOWNERDEAD) { proc_pthread_mutex_dec(mutex); - pthread_mutex_consistent_np(mutex->os.pthread_interproc); + pthread_mutex_consistent_np(&proc_pthread_mutex(mutex)); } else #endif @@ -741,7 +745,7 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, proc_pthread_mutex_cond_num_waiters(mutex)++; if (timeout < 0) { rv = pthread_cond_wait(&proc_pthread_mutex_cond(mutex), - mutex->os.pthread_interproc); + &proc_pthread_mutex(mutex)); #ifdef HAVE_ZOS_PTHREADS if (rv) { rv = errno; @@ -756,7 +760,7 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, abstime.tv_sec = apr_time_sec(timeout); abstime.tv_nsec = apr_time_usec(timeout) * 1000; /* nanoseconds */ rv = pthread_cond_timedwait(&proc_pthread_mutex_cond(mutex), - mutex->os.pthread_interproc, + &proc_pthread_mutex(mutex), &abstime); if (rv) { #ifdef HAVE_ZOS_PTHREADS @@ -770,11 +774,11 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, proc_pthread_mutex_cond_num_waiters(mutex)--; } if (rv) { - pthread_mutex_unlock(mutex->os.pthread_interproc); + pthread_mutex_unlock(&proc_pthread_mutex(mutex)); return rv; } - rv = pthread_mutex_unlock(mutex->os.pthread_interproc); + rv = pthread_mutex_unlock(&proc_pthread_mutex(mutex)); if (rv) { #ifdef HAVE_ZOS_PTHREADS rv = errno; @@ -786,7 +790,7 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, #endif /* APR_USE_PROC_PTHREAD_MUTEX_COND */ { if (timeout < 0) { - rv = pthread_mutex_lock(mutex->os.pthread_interproc); + rv = pthread_mutex_lock(&proc_pthread_mutex(mutex)); if (rv) { #ifdef HAVE_ZOS_PTHREADS rv = errno; @@ -794,7 +798,7 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, } } else if (!timeout) { - rv = pthread_mutex_trylock(mutex->os.pthread_interproc); + rv = pthread_mutex_trylock(&proc_pthread_mutex(mutex)); if (rv) { #ifdef HAVE_ZOS_PTHREADS rv = errno; @@ -811,7 +815,7 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, } abstime.tv_sec = apr_time_sec(timeout); abstime.tv_nsec = apr_time_usec(timeout) * 1000; /* nanoseconds */ - rv = pthread_mutex_timedlock(mutex->os.pthread_interproc, &abstime); + rv = pthread_mutex_timedlock(&proc_pthread_mutex(mutex), &abstime); if (rv) { #ifdef HAVE_ZOS_PTHREADS rv = errno; @@ -826,7 +830,7 @@ static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex, /* Okay, our owner died. Let's try to make it consistent again. */ if (rv == EOWNERDEAD) { proc_pthread_mutex_dec(mutex); - pthread_mutex_consistent_np(mutex->os.pthread_interproc); + pthread_mutex_consistent_np(&proc_pthread_mutex(mutex)); } else #endif @@ -845,7 +849,7 @@ static apr_status_t proc_mutex_pthread_release(apr_proc_mutex_t *mutex) #if APR_USE_PROC_PTHREAD_MUTEX_COND if (proc_pthread_mutex_cond_locked(mutex) != -1) { - if ((rv = pthread_mutex_lock(mutex->os.pthread_interproc))) { + if ((rv = pthread_mutex_lock(&proc_pthread_mutex(mutex)))) { #ifdef HAVE_ZOS_PTHREADS rv = errno; #endif @@ -853,7 +857,7 @@ static apr_status_t proc_mutex_pthread_release(apr_proc_mutex_t *mutex) /* Okay, our owner died. Let's try to make it consistent again. */ if (rv == EOWNERDEAD) { proc_pthread_mutex_dec(mutex); - pthread_mutex_consistent_np(mutex->os.pthread_interproc); + pthread_mutex_consistent_np(&proc_pthread_mutex(mutex)); } else #endif @@ -876,14 +880,14 @@ static apr_status_t proc_mutex_pthread_release(apr_proc_mutex_t *mutex) rv = APR_SUCCESS; } if (rv) { - pthread_mutex_unlock(mutex->os.pthread_interproc); + pthread_mutex_unlock(&proc_pthread_mutex(mutex)); return rv; } } #endif /* APR_USE_PROC_PTHREAD_MUTEX_COND */ mutex->curr_locked = 0; - if ((rv = pthread_mutex_unlock(mutex->os.pthread_interproc))) { + if ((rv = pthread_mutex_unlock(&proc_pthread_mutex(mutex)))) { #ifdef HAVE_ZOS_PTHREADS rv = errno; #endif |