Date: Mon, 02 Jul 2012 13:09:57 +0000 From: gmiller@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r238803 - in soc2012/gmiller/locking-head: . lib/libwitness Message-ID: <20120702130957.12C9C106567E@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gmiller Date: Mon Jul 2 13:09:56 2012 New Revision: 238803 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238803 Log: r238820@FreeBSD-dev: root | 2012-06-29 15:18:48 -0500 Add rwlock wrappers. Modified: soc2012/gmiller/locking-head/ (props changed) soc2012/gmiller/locking-head/lib/libwitness/wrappers.c Modified: soc2012/gmiller/locking-head/lib/libwitness/wrappers.c ============================================================================== --- soc2012/gmiller/locking-head/lib/libwitness/wrappers.c Mon Jul 2 13:09:47 2012 (r238802) +++ soc2012/gmiller/locking-head/lib/libwitness/wrappers.c Mon Jul 2 13:09:56 2012 (r238803) @@ -32,6 +32,15 @@ int _pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *ts); int _pthread_mutex_unlock(pthread_mutex_t *mutex); +int _pthread_rwlock_rdlock(pthread_rwlock_t *mutex); +int _pthread_rwlock_tryrdlock(pthread_rwlock_t *mutex); +int _pthread_rwlock_timedrdlock(pthread_rwlock_t *mutex, + const struct timespec *ts); +int _pthread_rwlock_wrlock(pthread_rwlock_t *mutex); +int _pthread_rwlock_trywrlock(pthread_rwlock_t *mutex); +int _pthread_rwlock_timedwrlock(pthread_rwlock_t *mutex, + const struct timespec *ts); +int _pthread_rwlock_unlock(pthread_rwlock_t *mutex); pthread_mutex_t witness_mtx = PTHREAD_MUTEX_INITIALIZER; @@ -86,3 +95,94 @@ return (ret); } + +int +pthread_rwlock_rdlock(pthread_rwlock_t *rwlock) +{ + int ret; + + ret = _pthread_rwlock_rdlock(rwlock); + if (ret == 0) { + add_lock(rwlock); + } + + return (ret); +} + +int +pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock) +{ + int ret; + + ret = _pthread_rwlock_tryrdlock(rwlock); + if (ret == 0) { + add_lock(rwlock); + } + + return (ret); +} + +int +pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock, const struct timespec *ts) +{ + int ret; + + ret = _pthread_rwlock_timedrdlock(rwlock, ts); + if (ret == 0) { + add_lock(rwlock); + } + + return (ret); +} + +int +pthread_rwlock_wrlock(pthread_rwlock_t *rwlock) +{ + int ret; + + ret = _pthread_rwlock_wrlock(rwlock); + if (ret == 0) { + add_lock(rwlock); + } + + return (ret); +} + +int +pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock) +{ + int ret; + + ret = _pthread_rwlock_trywrlock(rwlock); + if (ret == 0) { + add_lock(rwlock); + } + + return (ret); +} + +int +pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlock, const struct timespec *ts) +{ + int ret; + + ret = _pthread_rwlock_timedwrlock(rwlock, ts); + if (ret == 0) { + add_lock(rwlock); + } + + return (ret); +} + +int +pthread_rwlock_unlock(pthread_rwlock_t *rwlock) +{ + int ret; + + ret = _pthread_rwlock_unlock(rwlock); + if (ret == 0) { + remove_lock(rwlock); + } + + return (ret); +}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120702130957.12C9C106567E>