You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2014/05/27 14:42:39 UTC

svn commit: r1597765 - in /qpid/dispatch/trunk: include/qpid/dispatch/threading.h src/posix/threading.c

Author: tross
Date: Tue May 27 12:42:38 2014
New Revision: 1597765

URL: http://svn.apache.org/r1597765
Log:
NO-JIRA - Added read/write locking facility to the threading module.

Modified:
    qpid/dispatch/trunk/include/qpid/dispatch/threading.h
    qpid/dispatch/trunk/src/posix/threading.c

Modified: qpid/dispatch/trunk/include/qpid/dispatch/threading.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/include/qpid/dispatch/threading.h?rev=1597765&r1=1597764&r2=1597765&view=diff
==============================================================================
--- qpid/dispatch/trunk/include/qpid/dispatch/threading.h (original)
+++ qpid/dispatch/trunk/include/qpid/dispatch/threading.h Tue May 27 12:42:38 2014
@@ -36,6 +36,15 @@ void        sys_cond_signal(sys_cond_t *
 void        sys_cond_signal_all(sys_cond_t *cond);
 
 
+typedef struct sys_rwlock_t sys_rwlock_t;
+
+sys_rwlock_t *sys_rwlock(void);
+void          sys_rwlock_free(sys_rwlock_t *lock);
+void          sys_rwlock_wrlock(sys_rwlock_t *lock);
+void          sys_rwlock_rdlock(sys_rwlock_t *lock);
+void          sys_rwlock_unlock(sys_rwlock_t *lock);
+
+
 typedef struct sys_thread_t sys_thread_t;
 
 sys_thread_t *sys_thread(void *(*run_function) (void *), void *arg);

Modified: qpid/dispatch/trunk/src/posix/threading.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/posix/threading.c?rev=1597765&r1=1597764&r2=1597765&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/posix/threading.c (original)
+++ qpid/dispatch/trunk/src/posix/threading.c Tue May 27 12:42:38 2014
@@ -101,6 +101,44 @@ void sys_cond_signal_all(sys_cond_t *con
 }
 
 
+struct sys_rwlock_t {
+    pthread_rwlock_t lock;
+};
+
+
+sys_rwlock_t *sys_rwlock(void)
+{
+    sys_rwlock_t *lock = NEW(sys_rwlock_t);
+    pthread_rwlock_init(&(lock->lock), 0);
+    return lock;
+}
+
+
+void sys_rwlock_free(sys_rwlock_t *lock)
+{
+    pthread_rwlock_destroy(&(lock->lock));
+    free(lock);
+}
+
+
+void sys_rwlock_wrlock(sys_rwlock_t *lock)
+{
+    pthread_rwlock_wrlock(&(lock->lock));
+}
+
+
+void sys_rwlock_rdlock(sys_rwlock_t *lock)
+{
+    pthread_rwlock_rdlock(&(lock->lock));
+}
+
+
+void sys_rwlock_unlock(sys_rwlock_t *lock)
+{
+    pthread_rwlock_unlock(&(lock->lock));
+}
+
+
 struct sys_thread_t {
     pthread_t thread;
 };



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org