diff options
author | jorton <jorton@13f79535-47bb-0310-9956-ffa450edef68> | 2004-06-14 09:09:55 +0000 |
---|---|---|
committer | jorton <jorton@13f79535-47bb-0310-9956-ffa450edef68> | 2004-06-14 09:09:55 +0000 |
commit | 548ac50e9001bd0d4ae93762d4e7251d2a179132 (patch) | |
tree | c6bceebb6063790c4e4a49bc9937072a8c5214d0 /locks | |
parent | 385137b256c3a59e3f247d19c3d4b52b64051c3e (diff) | |
download | libapr-548ac50e9001bd0d4ae93762d4e7251d2a179132.tar.gz |
* locks/unix/proc_mutex.c (proc_mutex_posix_cleanup): Ignore
interproc->filedes, always close the semaphore.
(proc_mutex_posix_create): Don't call cleanup if sem_open failed,
don't set interproc->filedes to -1.
(proc_mutex_posix_acquire): Simplify error handling.
(proc_mutex_posix_release): Simplify. Only clear curr_locked flag on
success.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@65187 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'locks')
-rw-r--r-- | locks/unix/proc_mutex.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/locks/unix/proc_mutex.c b/locks/unix/proc_mutex.c index 9d1c90b63..fda7d6ba5 100644 --- a/locks/unix/proc_mutex.c +++ b/locks/unix/proc_mutex.c @@ -46,22 +46,19 @@ static apr_status_t proc_mutex_no_child_init(apr_proc_mutex_t **mutex, static apr_status_t proc_mutex_posix_cleanup(void *mutex_) { - apr_proc_mutex_t *mutex=mutex_; - apr_status_t stat = APR_SUCCESS; + apr_proc_mutex_t *mutex = mutex_; - if (mutex->interproc->filedes != -1) { - if (sem_close(mutex->psem_interproc) < 0) { - stat = errno; - } + if (sem_close(mutex->psem_interproc) < 0) { + return errno; } - return stat; + + return APR_SUCCESS; } static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, const char *fname) { sem_t *psem; - apr_status_t stat; char semname[31]; apr_time_t now; unsigned long sec; @@ -69,7 +66,6 @@ static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, new_mutex->interproc = apr_palloc(new_mutex->pool, sizeof(*new_mutex->interproc)); - new_mutex->interproc->filedes = -1; /* * This bogusness is to follow what appears to be the * lowest common denominator in Posix semaphore naming: @@ -107,9 +103,7 @@ static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, } if (psem == (sem_t *)SEM_FAILED) { - stat = errno; - proc_mutex_posix_cleanup(new_mutex); - return stat; + return errno; } /* Ahhh. The joys of Posix sems. Predelete it... */ sem_unlink((const char *) semname); @@ -123,9 +117,7 @@ static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, static apr_status_t proc_mutex_posix_acquire(apr_proc_mutex_t *mutex) { - int rc; - - if ((rc = sem_wait(mutex->psem_interproc)) < 0) { + if (sem_wait(mutex->psem_interproc) < 0) { return errno; } mutex->curr_locked = 1; @@ -134,12 +126,10 @@ static apr_status_t proc_mutex_posix_acquire(apr_proc_mutex_t *mutex) static apr_status_t proc_mutex_posix_release(apr_proc_mutex_t *mutex) { - int rc; - - mutex->curr_locked = 0; - if ((rc = sem_post(mutex->psem_interproc)) < 0) { + if (sem_post(mutex->psem_interproc) < 0) { return errno; } + mutex->curr_locked = 0; return APR_SUCCESS; } |