diff options
Diffstat (limited to 'lib/libc_r/uthread/uthread_rwlock.c')
-rw-r--r-- | lib/libc_r/uthread/uthread_rwlock.c | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/lib/libc_r/uthread/uthread_rwlock.c b/lib/libc_r/uthread/uthread_rwlock.c index 2f55f03..09a84f2 100644 --- a/lib/libc_r/uthread/uthread_rwlock.c +++ b/lib/libc_r/uthread/uthread_rwlock.c @@ -30,7 +30,10 @@ #include <limits.h> #include <stdlib.h> +#include "namespace.h" #include <pthread.h> +#include "un-namespace.h" + #include "pthread_private.h" /* maximum number of times a read lock may be obtained */ @@ -56,7 +59,7 @@ init_static (pthread_rwlock_t *rwlock) _SPINLOCK(&static_init_lock); if (*rwlock == NULL) - ret = pthread_rwlock_init(rwlock, NULL); + ret = _pthread_rwlock_init(rwlock, NULL); else ret = 0; @@ -77,9 +80,9 @@ _pthread_rwlock_destroy (pthread_rwlock_t *rwlock) prwlock = *rwlock; - pthread_mutex_destroy(&prwlock->lock); - pthread_cond_destroy(&prwlock->read_signal); - pthread_cond_destroy(&prwlock->write_signal); + _pthread_mutex_destroy(&prwlock->lock); + _pthread_cond_destroy(&prwlock->read_signal); + _pthread_cond_destroy(&prwlock->write_signal); free(prwlock); *rwlock = NULL; @@ -103,22 +106,22 @@ _pthread_rwlock_init (pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr return(ENOMEM); /* initialize the lock */ - if ((ret = pthread_mutex_init(&prwlock->lock, NULL)) != 0) + if ((ret = _pthread_mutex_init(&prwlock->lock, NULL)) != 0) free(prwlock); else { /* initialize the read condition signal */ - ret = pthread_cond_init(&prwlock->read_signal, NULL); + ret = _pthread_cond_init(&prwlock->read_signal, NULL); if (ret != 0) { - pthread_mutex_destroy(&prwlock->lock); + _pthread_mutex_destroy(&prwlock->lock); free(prwlock); } else { /* initialize the write condition signal */ - ret = pthread_cond_init(&prwlock->write_signal, NULL); + ret = _pthread_cond_init(&prwlock->write_signal, NULL); if (ret != 0) { - pthread_cond_destroy(&prwlock->read_signal); - pthread_mutex_destroy(&prwlock->lock); + _pthread_cond_destroy(&prwlock->read_signal); + _pthread_mutex_destroy(&prwlock->lock); free(prwlock); } else { /* success */ @@ -153,16 +156,16 @@ _pthread_rwlock_rdlock (pthread_rwlock_t *rwlock) } /* grab the monitor lock */ - if ((ret = pthread_mutex_lock(&prwlock->lock)) != 0) + if ((ret = _pthread_mutex_lock(&prwlock->lock)) != 0) return(ret); /* give writers priority over readers */ while (prwlock->blocked_writers || prwlock->state < 0) { - ret = pthread_cond_wait(&prwlock->read_signal, &prwlock->lock); + ret = _pthread_cond_wait(&prwlock->read_signal, &prwlock->lock); if (ret != 0) { /* can't do a whole lot if this fails */ - pthread_mutex_unlock(&prwlock->lock); + _pthread_mutex_unlock(&prwlock->lock); return(ret); } } @@ -179,7 +182,7 @@ _pthread_rwlock_rdlock (pthread_rwlock_t *rwlock) * lock. Decrementing 'state' is no good because we probably * don't have the monitor lock. */ - pthread_mutex_unlock(&prwlock->lock); + _pthread_mutex_unlock(&prwlock->lock); return(ret); } @@ -204,7 +207,7 @@ _pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlock) } /* grab the monitor lock */ - if ((ret = pthread_mutex_lock(&prwlock->lock)) != 0) + if ((ret = _pthread_mutex_lock(&prwlock->lock)) != 0) return(ret); /* give writers priority over readers */ @@ -216,7 +219,7 @@ _pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlock) ++prwlock->state; /* indicate we are locked for reading */ /* see the comment on this in pthread_rwlock_rdlock */ - pthread_mutex_unlock(&prwlock->lock); + _pthread_mutex_unlock(&prwlock->lock); return(ret); } @@ -241,7 +244,7 @@ _pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock) } /* grab the monitor lock */ - if ((ret = pthread_mutex_lock(&prwlock->lock)) != 0) + if ((ret = _pthread_mutex_lock(&prwlock->lock)) != 0) return(ret); if (prwlock->state != 0) @@ -251,7 +254,7 @@ _pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock) prwlock->state = -1; /* see the comment on this in pthread_rwlock_rdlock */ - pthread_mutex_unlock(&prwlock->lock); + _pthread_mutex_unlock(&prwlock->lock); return(ret); } @@ -271,24 +274,24 @@ _pthread_rwlock_unlock (pthread_rwlock_t *rwlock) return(EINVAL); /* grab the monitor lock */ - if ((ret = pthread_mutex_lock(&prwlock->lock)) != 0) + if ((ret = _pthread_mutex_lock(&prwlock->lock)) != 0) return(ret); if (prwlock->state > 0) { if (--prwlock->state == 0 && prwlock->blocked_writers) - ret = pthread_cond_signal(&prwlock->write_signal); + ret = _pthread_cond_signal(&prwlock->write_signal); } else if (prwlock->state < 0) { prwlock->state = 0; if (prwlock->blocked_writers) - ret = pthread_cond_signal(&prwlock->write_signal); + ret = _pthread_cond_signal(&prwlock->write_signal); else - ret = pthread_cond_broadcast(&prwlock->read_signal); + ret = _pthread_cond_broadcast(&prwlock->read_signal); } else ret = EINVAL; /* see the comment on this in pthread_rwlock_rdlock */ - pthread_mutex_unlock(&prwlock->lock); + _pthread_mutex_unlock(&prwlock->lock); return(ret); } @@ -313,17 +316,17 @@ _pthread_rwlock_wrlock (pthread_rwlock_t *rwlock) } /* grab the monitor lock */ - if ((ret = pthread_mutex_lock(&prwlock->lock)) != 0) + if ((ret = _pthread_mutex_lock(&prwlock->lock)) != 0) return(ret); while (prwlock->state != 0) { ++prwlock->blocked_writers; - ret = pthread_cond_wait(&prwlock->write_signal, &prwlock->lock); + ret = _pthread_cond_wait(&prwlock->write_signal, &prwlock->lock); if (ret != 0) { --prwlock->blocked_writers; - pthread_mutex_unlock(&prwlock->lock); + _pthread_mutex_unlock(&prwlock->lock); return(ret); } @@ -334,7 +337,7 @@ _pthread_rwlock_wrlock (pthread_rwlock_t *rwlock) prwlock->state = -1; /* see the comment on this in pthread_rwlock_rdlock */ - pthread_mutex_unlock(&prwlock->lock); + _pthread_mutex_unlock(&prwlock->lock); return(ret); } |