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