socsvn commit: r239506 - in soc2012/gmiller/locking-head: .
lib/libwitness
gmiller at FreeBSD.org
gmiller at FreeBSD.org
Wed Jul 18 02:46:46 UTC 2012
Author: gmiller
Date: Wed Jul 18 02:46:43 2012
New Revision: 239506
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=239506
Log:
r239539 at FreeBSD-dev: root | 2012-07-14 17:22:10 -0500
Finish implementation of blessed locks.
Modified:
soc2012/gmiller/locking-head/ (props changed)
soc2012/gmiller/locking-head/lib/libwitness/graph.c
soc2012/gmiller/locking-head/lib/libwitness/lockinfo.c
soc2012/gmiller/locking-head/lib/libwitness/witness.h
Modified: soc2012/gmiller/locking-head/lib/libwitness/graph.c
==============================================================================
--- soc2012/gmiller/locking-head/lib/libwitness/graph.c Tue Jul 17 22:16:10 2012 (r239505)
+++ soc2012/gmiller/locking-head/lib/libwitness/graph.c Wed Jul 18 02:46:43 2012 (r239506)
@@ -68,7 +68,7 @@
return (0);
}
- if (scan_graph(to, from)) {
+ if (scan_graph(to, from) && !blessed(from, to)) {
return (-1);
}
Modified: soc2012/gmiller/locking-head/lib/libwitness/lockinfo.c
==============================================================================
--- soc2012/gmiller/locking-head/lib/libwitness/lockinfo.c Tue Jul 17 22:16:10 2012 (r239505)
+++ soc2012/gmiller/locking-head/lib/libwitness/lockinfo.c Wed Jul 18 02:46:43 2012 (r239506)
@@ -62,3 +62,17 @@
info = lookup_lock(lock);
info->active = 0;
}
+
+int
+blessed(struct lock_info *first, struct lock_info *second)
+{
+ struct blessing *bless;
+
+ SLIST_FOREACH(bless, &first->bless_head, bless_next) {
+ if (bless->lock == second) {
+ return (1);
+ }
+ }
+
+ return (0);
+}
Modified: soc2012/gmiller/locking-head/lib/libwitness/witness.h
==============================================================================
--- soc2012/gmiller/locking-head/lib/libwitness/witness.h Tue Jul 17 22:16:10 2012 (r239505)
+++ soc2012/gmiller/locking-head/lib/libwitness/witness.h Wed Jul 18 02:46:43 2012 (r239506)
@@ -56,4 +56,5 @@
void log_reversal(struct lock_info *lock, struct lock_info *previous);
struct lock_info *lookup_lock(void *lock);
-void destroy_lock(void *lock);
+void destroy_lock(void *lock);
+int blessed(struct lock_info *first, struct lock_info *second);
More information about the svn-soc-all
mailing list