Date: Fri, 20 Jul 2012 03:40:47 +0000 From: gmiller@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r239605 - in soc2012/gmiller/locking-head: . lib/libwitness Message-ID: <20120720034047.27A49106566C@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gmiller Date: Fri Jul 20 03:40:46 2012 New Revision: 239605 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=239605 Log: r239632@FreeBSD-dev: root | 2012-07-15 12:32:28 -0500 Assign default names to locks. Modified: soc2012/gmiller/locking-head/ (props changed) soc2012/gmiller/locking-head/lib/libwitness/lockinfo.c soc2012/gmiller/locking-head/lib/libwitness/witness.h soc2012/gmiller/locking-head/lib/libwitness/wrappers.c Modified: soc2012/gmiller/locking-head/lib/libwitness/lockinfo.c ============================================================================== --- soc2012/gmiller/locking-head/lib/libwitness/lockinfo.c Fri Jul 20 03:10:36 2012 (r239604) +++ soc2012/gmiller/locking-head/lib/libwitness/lockinfo.c Fri Jul 20 03:40:46 2012 (r239605) @@ -27,6 +27,8 @@ #include "witness.h" +#define MAX_DEFAULT_NAME_LENGTH (80) + static SLIST_HEAD(lock_info_head, lock_info) lock_info_head = SLIST_HEAD_INITIALIZER(lock_info_head); @@ -106,3 +108,15 @@ strcpy(info->name, name); } } + +void +check_default_name(struct lock_info *lock, const char *prefix) +{ + if (lock->name == NULL) { + lock->name = malloc(MAX_DEFAULT_NAME_LENGTH + 1); + if (lock->name != NULL) { + snprintf(lock->name, MAX_DEFAULT_NAME_LENGTH, "%s%p", + prefix, lock->lock); + } + } +} Modified: soc2012/gmiller/locking-head/lib/libwitness/witness.h ============================================================================== --- soc2012/gmiller/locking-head/lib/libwitness/witness.h Fri Jul 20 03:10:36 2012 (r239604) +++ soc2012/gmiller/locking-head/lib/libwitness/witness.h Fri Jul 20 03:40:46 2012 (r239605) @@ -30,6 +30,7 @@ #include <errno.h> #include <pthread.h> #include <pthread_np.h> +#include <stdio.h> #include <stdlib.h> #include <string.h> @@ -63,3 +64,4 @@ void destroy_lock(void *lock); int blessed(struct lock_info *first, struct lock_info *second); void reset_lock_info(void); +void check_default_name(struct lock_info *lock, const char *prefix); Modified: soc2012/gmiller/locking-head/lib/libwitness/wrappers.c ============================================================================== --- soc2012/gmiller/locking-head/lib/libwitness/wrappers.c Fri Jul 20 03:10:36 2012 (r239604) +++ soc2012/gmiller/locking-head/lib/libwitness/wrappers.c Fri Jul 20 03:40:46 2012 (r239605) @@ -54,12 +54,16 @@ pthread_mutex_lock(pthread_mutex_t *mutex) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(mutex); + check_default_name(lock, "mutex_"); + ret = _pthread_mutex_lock(mutex); if (mutex != &witness_mtx && ret == 0) { - add_lock(lookup_lock(mutex)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -71,12 +75,16 @@ pthread_mutex_trylock(pthread_mutex_t *mutex) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(mutex); + check_default_name(lock, "mutex_"); + ret = _pthread_mutex_trylock(mutex); if (mutex != &witness_mtx && ret == 0) { - add_lock(lookup_lock(mutex)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -88,12 +96,16 @@ pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *ts) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(mutex); + check_default_name(lock, "mutex_"); + ret = _pthread_mutex_timedlock(mutex, ts); if (mutex != &witness_mtx && ret == 0) { - add_lock(lookup_lock(mutex)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -137,12 +149,16 @@ pthread_rwlock_rdlock(pthread_rwlock_t *rwlock) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(rwlock); + check_default_name(lock, "rwlock_"); + ret = _pthread_rwlock_rdlock(rwlock); if (ret == 0) { - add_lock(lookup_lock(rwlock)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -154,12 +170,16 @@ pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(rwlock); + check_default_name(lock, "rwlock_"); + ret = _pthread_rwlock_tryrdlock(rwlock); if (ret == 0) { - add_lock(lookup_lock(rwlock)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -171,12 +191,16 @@ pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock, const struct timespec *ts) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(rwlock); + check_default_name(lock, "rwlock_"); + ret = _pthread_rwlock_timedrdlock(rwlock, ts); if (ret == 0) { - add_lock(lookup_lock(rwlock)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -188,12 +212,16 @@ pthread_rwlock_wrlock(pthread_rwlock_t *rwlock) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(rwlock); + check_default_name(lock, "rwlock_"); + ret = _pthread_rwlock_wrlock(rwlock); if (ret == 0) { - add_lock(lookup_lock(rwlock)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -205,12 +233,16 @@ pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(rwlock); + check_default_name(lock, "rwlock_"); + ret = _pthread_rwlock_trywrlock(rwlock); if (ret == 0) { - add_lock(lookup_lock(rwlock)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -222,12 +254,16 @@ pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlock, const struct timespec *ts) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(rwlock); + check_default_name(lock, "rwlock_"); + ret = _pthread_rwlock_timedwrlock(rwlock, ts); if (ret == 0) { - add_lock(lookup_lock(rwlock)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -271,12 +307,16 @@ pthread_spin_lock(pthread_spinlock_t *spin) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(spin); + check_default_name(lock, "spinlock_"); + ret = _pthread_spin_lock(spin); if (ret == 0) { - add_lock(lookup_lock(spin)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx); @@ -288,12 +328,16 @@ pthread_spin_trylock(pthread_spinlock_t *spin) { int ret; + struct lock_info *lock; _pthread_mutex_lock(&witness_mtx); + lock = lookup_lock(spin); + check_default_name(lock, "spinlock_"); + ret = _pthread_spin_lock(spin); if (ret == 0) { - add_lock(lookup_lock(spin)); + add_lock(lock); } _pthread_mutex_unlock(&witness_mtx);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120720034047.27A49106566C>