From e96dba4eaa0223c5a85363f6a1532bc3d7f7f7eb Mon Sep 17 00:00:00 2001 From: mtm Date: Mon, 2 Jun 2003 10:04:18 +0000 Subject: Consolidate static_init() and static_init_private into one function. The behaviour of this function is controlled by the argument: private. --- lib/libthr/thread/thr_mutex.c | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) (limited to 'lib/libthr') diff --git a/lib/libthr/thread/thr_mutex.c b/lib/libthr/thread/thr_mutex.c index 50ece61..40921ec6 100644 --- a/lib/libthr/thread/thr_mutex.c +++ b/lib/libthr/thread/thr_mutex.c @@ -64,6 +64,7 @@ */ static int get_muncontested(pthread_mutex_t, int); static void get_mcontested(pthread_mutex_t); +static int mutex_init(pthread_mutex_t *, int); static int mutex_lock_common(pthread_mutex_t *, int); static inline int mutex_self_trylock(pthread_mutex_t); static inline int mutex_self_lock(pthread_mutex_t); @@ -267,23 +268,16 @@ _pthread_mutex_destroy(pthread_mutex_t * mutex) } static int -init_static(pthread_mutex_t *mutex) +mutex_init(pthread_mutex_t *mutex, int private) { - int error = 0; - _SPINLOCK(&static_init_lock); - if (*mutex == PTHREAD_MUTEX_INITIALIZER) - error = _pthread_mutex_init(mutex, NULL); - _SPINUNLOCK(&static_init_lock); - return (error); -} + pthread_mutexattr_t *pma; + int error; -static int -init_static_private(pthread_mutex_t *mutex) -{ - int error = 0; + error = 0; + pma = private ? &static_mattr : NULL; _SPINLOCK(&static_init_lock); if (*mutex == PTHREAD_MUTEX_INITIALIZER) - error = _pthread_mutex_init(mutex, &static_mattr); + error = _pthread_mutex_init(mutex, pma); _SPINUNLOCK(&static_init_lock); return (error); } @@ -301,7 +295,7 @@ __pthread_mutex_trylock(pthread_mutex_t *mutex) * initialization: */ else if ((*mutex != PTHREAD_MUTEX_INITIALIZER) || - (ret = init_static(mutex)) == 0) + (ret = mutex_init(mutex, 0)) == 0) ret = mutex_lock_common(mutex, 1); return (ret); @@ -320,7 +314,7 @@ _pthread_mutex_trylock(pthread_mutex_t *mutex) * initialization marking the mutex private (delete safe): */ else if ((*mutex != PTHREAD_MUTEX_INITIALIZER) || - (ret = init_static_private(mutex)) == 0) + (ret = mutex_init(mutex, 1)) == 0) ret = mutex_lock_common(mutex, 1); return (ret); @@ -505,7 +499,7 @@ __pthread_mutex_lock(pthread_mutex_t *mutex) * initialization: */ else if ((*mutex != PTHREAD_MUTEX_INITIALIZER) || - ((ret = init_static(mutex)) == 0)) + ((ret = mutex_init(mutex, 0)) == 0)) ret = mutex_lock_common(mutex, 0); return (ret); @@ -527,7 +521,7 @@ _pthread_mutex_lock(pthread_mutex_t *mutex) * initialization marking it private (delete safe): */ else if ((*mutex != PTHREAD_MUTEX_INITIALIZER) || - ((ret = init_static_private(mutex)) == 0)) + ((ret = mutex_init(mutex, 1)) == 0)) ret = mutex_lock_common(mutex, 0); return (ret); -- cgit v1.1