socsvn commit: r238803 - in soc2012/gmiller/locking-head: .
lib/libwitness
gmiller at FreeBSD.org
gmiller at FreeBSD.org
Mon Jul 2 13:09:59 UTC 2012
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 at 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);
+}
More information about the svn-soc-all
mailing list