socsvn commit: r238502 - in soc2012/gmiller/locking-head: .
lib/libwitness
gmiller at FreeBSD.org
gmiller at FreeBSD.org
Thu Jun 28 20:01:28 UTC 2012
Author: gmiller
Date: Thu Jun 28 20:01:25 2012
New Revision: 238502
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238502
Log:
r238483 at FreeBSD-dev: root | 2012-06-20 00:39:33 -0500
Merge headers into witness.h and add a witness mutex to protect graph
data structure.
Added:
soc2012/gmiller/locking-head/lib/libwitness/witness.h
- copied, changed from r238347, soc2012/gmiller/locking-head/lib/libwitness/lists.h
Deleted:
soc2012/gmiller/locking-head/lib/libwitness/graph.h
soc2012/gmiller/locking-head/lib/libwitness/lists.h
Modified:
soc2012/gmiller/locking-head/ (props changed)
soc2012/gmiller/locking-head/lib/libwitness/graph.c
soc2012/gmiller/locking-head/lib/libwitness/lists.c
soc2012/gmiller/locking-head/lib/libwitness/wrappers.c
Modified: soc2012/gmiller/locking-head/lib/libwitness/graph.c
==============================================================================
--- soc2012/gmiller/locking-head/lib/libwitness/graph.c Thu Jun 28 20:00:11 2012 (r238501)
+++ soc2012/gmiller/locking-head/lib/libwitness/graph.c Thu Jun 28 20:01:25 2012 (r238502)
@@ -25,7 +25,9 @@
*
*/
-#include "graph.h"
+#include "witness.h"
+
+struct graph_node *root = NULL;
int
insert_edge(struct graph_node *from, struct graph_node *to)
Modified: soc2012/gmiller/locking-head/lib/libwitness/lists.c
==============================================================================
--- soc2012/gmiller/locking-head/lib/libwitness/lists.c Thu Jun 28 20:00:11 2012 (r238501)
+++ soc2012/gmiller/locking-head/lib/libwitness/lists.c Thu Jun 28 20:01:25 2012 (r238502)
@@ -25,12 +25,7 @@
*
*/
-#include <sys/queue.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "lists.h"
+#include "witness.h"
_Thread_local SLIST_HEAD(lock_head, lock_entry) lock_head =
SLIST_HEAD_INITIALIZER(lock_head);
Copied and modified: soc2012/gmiller/locking-head/lib/libwitness/witness.h (from r238347, soc2012/gmiller/locking-head/lib/libwitness/lists.h)
==============================================================================
--- soc2012/gmiller/locking-head/lib/libwitness/lists.h Tue Jun 26 18:55:06 2012 (r238347, copy source)
+++ soc2012/gmiller/locking-head/lib/libwitness/witness.h Thu Jun 28 20:01:25 2012 (r238502)
@@ -25,10 +25,23 @@
*
*/
+#include <sys/queue.h>
+
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+
struct lock_entry {
SLIST_ENTRY(lock_entry) lock_next;
void *lock;
};
+struct graph_node {
+};
+
+extern pthread_mutex_t witness_mtx;
+
void add_lock(void *lock);
void remove_lock(void *lock);
+
+int insert_edge(struct graph_node *from, struct graph_node *to);
Modified: soc2012/gmiller/locking-head/lib/libwitness/wrappers.c
==============================================================================
--- soc2012/gmiller/locking-head/lib/libwitness/wrappers.c Thu Jun 28 20:00:11 2012 (r238501)
+++ soc2012/gmiller/locking-head/lib/libwitness/wrappers.c Thu Jun 28 20:01:25 2012 (r238502)
@@ -25,23 +25,22 @@
*
*/
-#include <sys/queue.h>
-
-#include <pthread.h>
-#include <stdio.h>
-
-#include "lists.h"
+#include "witness.h"
int _pthread_mutex_lock(pthread_mutex_t *mutex);
int _pthread_mutex_unlock(pthread_mutex_t *mutex);
+pthread_mutex_t witness_mtx = PTHREAD_MUTEX_INITIALIZER;
+
int
pthread_mutex_lock(pthread_mutex_t *mutex)
{
int ret;
ret = _pthread_mutex_lock(mutex);
- add_lock(mutex);
+ if (mutex != &witness_mtx) {
+ add_lock(mutex);
+ }
return ret;
}
@@ -52,7 +51,9 @@
int ret;
ret = _pthread_mutex_unlock(mutex);
- remove_lock(mutex);
+ if (mutex != &witness_mtx) {
+ remove_lock(mutex);
+ }
return ret;
}
More information about the svn-soc-all
mailing list