summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjorton <jorton@13f79535-47bb-0310-9956-ffa450edef68>2004-06-14 09:09:55 +0000
committerjorton <jorton@13f79535-47bb-0310-9956-ffa450edef68>2004-06-14 09:09:55 +0000
commit548ac50e9001bd0d4ae93762d4e7251d2a179132 (patch)
treec6bceebb6063790c4e4a49bc9937072a8c5214d0
parent385137b256c3a59e3f247d19c3d4b52b64051c3e (diff)
downloadlibapr-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
-rw-r--r--locks/unix/proc_mutex.c28
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;
}