summaryrefslogtreecommitdiff
path: root/usr/src/lib/libc/port/threads/rwlock.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libc/port/threads/rwlock.c')
-rw-r--r--usr/src/lib/libc/port/threads/rwlock.c98
1 files changed, 38 insertions, 60 deletions
diff --git a/usr/src/lib/libc/port/threads/rwlock.c b/usr/src/lib/libc/port/threads/rwlock.c
index 7a8e70b223..582da6b5c4 100644
--- a/usr/src/lib/libc/port/threads/rwlock.c
+++ b/usr/src/lib/libc/port/threads/rwlock.c
@@ -133,12 +133,10 @@ rwl_free(ulwp_t *ulwp)
/*
* Check if a reader version of the lock is held by the current thread.
- * rw_read_is_held() is private to libc.
*/
-#pragma weak rw_read_is_held = _rw_read_held
-#pragma weak rw_read_held = _rw_read_held
+#pragma weak _rw_read_held = rw_read_held
int
-_rw_read_held(rwlock_t *rwlp)
+rw_read_held(rwlock_t *rwlp)
{
volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers;
uint32_t readers;
@@ -178,12 +176,10 @@ _rw_read_held(rwlock_t *rwlp)
/*
* Check if a writer version of the lock is held by the current thread.
- * rw_write_is_held() is private to libc.
*/
-#pragma weak rw_write_is_held = _rw_write_held
-#pragma weak rw_write_held = _rw_write_held
+#pragma weak _rw_write_held = rw_write_held
int
-_rw_write_held(rwlock_t *rwlp)
+rw_write_held(rwlock_t *rwlp)
{
volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers;
uint32_t readers;
@@ -203,11 +199,10 @@ _rw_write_held(rwlock_t *rwlp)
return (rval);
}
-#pragma weak rwlock_init = __rwlock_init
-#pragma weak _rwlock_init = __rwlock_init
+#pragma weak _rwlock_init = rwlock_init
/* ARGSUSED2 */
int
-__rwlock_init(rwlock_t *rwlp, int type, void *arg)
+rwlock_init(rwlock_t *rwlp, int type, void *arg)
{
if (type != USYNC_THREAD && type != USYNC_PROCESS)
return (EINVAL);
@@ -227,12 +222,10 @@ __rwlock_init(rwlock_t *rwlp, int type, void *arg)
return (0);
}
-#pragma weak rwlock_destroy = __rwlock_destroy
-#pragma weak _rwlock_destroy = __rwlock_destroy
-#pragma weak pthread_rwlock_destroy = __rwlock_destroy
-#pragma weak _pthread_rwlock_destroy = __rwlock_destroy
+#pragma weak pthread_rwlock_destroy = rwlock_destroy
+#pragma weak _rwlock_destroy = rwlock_destroy
int
-__rwlock_destroy(rwlock_t *rwlp)
+rwlock_destroy(rwlock_t *rwlp)
{
/*
* Once destroyed, we can no longer be holding a read or write lock.
@@ -638,7 +631,7 @@ rw_rdlock_impl(rwlock_t *rwlp, timespec_t *tsp)
/*
* If we hold the writer lock, bail out.
*/
- if (rw_write_is_held(rwlp)) {
+ if (rw_write_held(rwlp)) {
if (self->ul_error_detection)
rwlock_error(rwlp, "rwlock_rdlock",
"calling thread owns the writer lock");
@@ -668,12 +661,10 @@ out:
return (error);
}
-#pragma weak rw_rdlock = __rw_rdlock
-#pragma weak _rw_rdlock = __rw_rdlock
-#pragma weak pthread_rwlock_rdlock = __rw_rdlock
-#pragma weak _pthread_rwlock_rdlock = __rw_rdlock
+#pragma weak pthread_rwlock_rdlock = rw_rdlock
+#pragma weak _rw_rdlock = rw_rdlock
int
-__rw_rdlock(rwlock_t *rwlp)
+rw_rdlock(rwlock_t *rwlp)
{
ASSERT(!curthread->ul_critical || curthread->ul_bindflags);
return (rw_rdlock_impl(rwlp, NULL));
@@ -686,31 +677,30 @@ lrw_rdlock(rwlock_t *rwlp)
(void) rw_rdlock_impl(rwlp, NULL);
}
-#pragma weak pthread_rwlock_reltimedrdlock_np = \
- _pthread_rwlock_reltimedrdlock_np
int
-_pthread_rwlock_reltimedrdlock_np(rwlock_t *rwlp, const timespec_t *reltime)
+pthread_rwlock_reltimedrdlock_np(pthread_rwlock_t *_RESTRICT_KYWD rwlp,
+ const struct timespec *_RESTRICT_KYWD reltime)
{
timespec_t tslocal = *reltime;
int error;
ASSERT(!curthread->ul_critical || curthread->ul_bindflags);
- error = rw_rdlock_impl(rwlp, &tslocal);
+ error = rw_rdlock_impl((rwlock_t *)rwlp, &tslocal);
if (error == ETIME)
error = ETIMEDOUT;
return (error);
}
-#pragma weak pthread_rwlock_timedrdlock = _pthread_rwlock_timedrdlock
int
-_pthread_rwlock_timedrdlock(rwlock_t *rwlp, const timespec_t *abstime)
+pthread_rwlock_timedrdlock(pthread_rwlock_t *_RESTRICT_KYWD rwlp,
+ const struct timespec *_RESTRICT_KYWD abstime)
{
timespec_t tslocal;
int error;
ASSERT(!curthread->ul_critical || curthread->ul_bindflags);
abstime_to_reltime(CLOCK_REALTIME, abstime, &tslocal);
- error = rw_rdlock_impl(rwlp, &tslocal);
+ error = rw_rdlock_impl((rwlock_t *)rwlp, &tslocal);
if (error == ETIME)
error = ETIMEDOUT;
return (error);
@@ -727,7 +717,7 @@ rw_wrlock_impl(rwlock_t *rwlp, timespec_t *tsp)
/*
* If we hold a readers lock on this rwlock, bail out.
*/
- if (rw_read_is_held(rwlp)) {
+ if (rw_read_held(rwlp)) {
if (self->ul_error_detection)
rwlock_error(rwlp, "rwlock_wrlock",
"calling thread owns the readers lock");
@@ -738,7 +728,7 @@ rw_wrlock_impl(rwlock_t *rwlp, timespec_t *tsp)
/*
* If we hold the writer lock, bail out.
*/
- if (rw_write_is_held(rwlp)) {
+ if (rw_write_held(rwlp)) {
if (self->ul_error_detection)
rwlock_error(rwlp, "rwlock_wrlock",
"calling thread owns the writer lock");
@@ -769,12 +759,10 @@ out:
return (error);
}
-#pragma weak rw_wrlock = __rw_wrlock
-#pragma weak _rw_wrlock = __rw_wrlock
-#pragma weak pthread_rwlock_wrlock = __rw_wrlock
-#pragma weak _pthread_rwlock_wrlock = __rw_wrlock
+#pragma weak pthread_rwlock_wrlock = rw_wrlock
+#pragma weak _rw_wrlock = rw_wrlock
int
-__rw_wrlock(rwlock_t *rwlp)
+rw_wrlock(rwlock_t *rwlp)
{
ASSERT(!curthread->ul_critical || curthread->ul_bindflags);
return (rw_wrlock_impl(rwlp, NULL));
@@ -787,42 +775,37 @@ lrw_wrlock(rwlock_t *rwlp)
(void) rw_wrlock_impl(rwlp, NULL);
}
-#pragma weak pthread_rwlock_reltimedwrlock_np = \
- _pthread_rwlock_reltimedwrlock_np
int
-_pthread_rwlock_reltimedwrlock_np(rwlock_t *rwlp, const timespec_t *reltime)
+pthread_rwlock_reltimedwrlock_np(pthread_rwlock_t *_RESTRICT_KYWD rwlp,
+ const struct timespec *_RESTRICT_KYWD reltime)
{
timespec_t tslocal = *reltime;
int error;
ASSERT(!curthread->ul_critical || curthread->ul_bindflags);
- error = rw_wrlock_impl(rwlp, &tslocal);
+ error = rw_wrlock_impl((rwlock_t *)rwlp, &tslocal);
if (error == ETIME)
error = ETIMEDOUT;
return (error);
}
-#pragma weak pthread_rwlock_timedwrlock = _pthread_rwlock_timedwrlock
int
-_pthread_rwlock_timedwrlock(rwlock_t *rwlp, const timespec_t *abstime)
+pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlp, const timespec_t *abstime)
{
timespec_t tslocal;
int error;
ASSERT(!curthread->ul_critical || curthread->ul_bindflags);
abstime_to_reltime(CLOCK_REALTIME, abstime, &tslocal);
- error = rw_wrlock_impl(rwlp, &tslocal);
+ error = rw_wrlock_impl((rwlock_t *)rwlp, &tslocal);
if (error == ETIME)
error = ETIMEDOUT;
return (error);
}
-#pragma weak rw_tryrdlock = __rw_tryrdlock
-#pragma weak _rw_tryrdlock = __rw_tryrdlock
-#pragma weak pthread_rwlock_tryrdlock = __rw_tryrdlock
-#pragma weak _pthread_rwlock_tryrdlock = __rw_tryrdlock
+#pragma weak pthread_rwlock_tryrdlock = rw_tryrdlock
int
-__rw_tryrdlock(rwlock_t *rwlp)
+rw_tryrdlock(rwlock_t *rwlp)
{
ulwp_t *self = curthread;
uberdata_t *udp = self->ul_uberdata;
@@ -878,12 +861,9 @@ out:
return (error);
}
-#pragma weak rw_trywrlock = __rw_trywrlock
-#pragma weak _rw_trywrlock = __rw_trywrlock
-#pragma weak pthread_rwlock_trywrlock = __rw_trywrlock
-#pragma weak _pthread_rwlock_trywrlock = __rw_trywrlock
+#pragma weak pthread_rwlock_trywrlock = rw_trywrlock
int
-__rw_trywrlock(rwlock_t *rwlp)
+rw_trywrlock(rwlock_t *rwlp)
{
ulwp_t *self = curthread;
uberdata_t *udp = self->ul_uberdata;
@@ -920,12 +900,10 @@ __rw_trywrlock(rwlock_t *rwlp)
return (error);
}
-#pragma weak rw_unlock = __rw_unlock
-#pragma weak _rw_unlock = __rw_unlock
-#pragma weak pthread_rwlock_unlock = __rw_unlock
-#pragma weak _pthread_rwlock_unlock = __rw_unlock
+#pragma weak pthread_rwlock_unlock = rw_unlock
+#pragma weak _rw_unlock = rw_unlock
int
-__rw_unlock(rwlock_t *rwlp)
+rw_unlock(rwlock_t *rwlp)
{
volatile uint32_t *rwstate = (volatile uint32_t *)&rwlp->rwlock_readers;
uint32_t readers;
@@ -951,7 +929,7 @@ __rw_unlock(rwlock_t *rwlp)
* Since the writer lock is held, we'd better be
* holding it, else we cannot legitimately be here.
*/
- if (!rw_write_is_held(rwlp)) {
+ if (!rw_write_held(rwlp)) {
if (self->ul_error_detection)
rwlock_error(rwlp, "rwlock_unlock",
"writer lock held, "
@@ -1041,6 +1019,6 @@ out:
void
lrw_unlock(rwlock_t *rwlp)
{
- (void) __rw_unlock(rwlp);
+ (void) rw_unlock(rwlp);
exit_critical(curthread);
}