Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Jul 2012 02:46:43 +0000
From:      gmiller@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r239506 - in soc2012/gmiller/locking-head: . lib/libwitness
Message-ID:  <20120718024643.E1D27106564A@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120718024643.E1D27106564A>