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