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>