Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jan 2010 01:19:01 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r201709 - head/sys/kern
Message-ID:  <201001070119.o071J1V9098305@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Thu Jan  7 01:19:01 2010
New Revision: 201709
URL: http://svn.freebsd.org/changeset/base/201709

Log:
  Tweak comments.

Modified:
  head/sys/kern/kern_lock.c

Modified: head/sys/kern/kern_lock.c
==============================================================================
--- head/sys/kern/kern_lock.c	Thu Jan  7 01:10:49 2010	(r201708)
+++ head/sys/kern/kern_lock.c	Thu Jan  7 01:19:01 2010	(r201709)
@@ -277,6 +277,11 @@ wakeupshlk(struct lock *lk, const char *
 		 * avoid a starvation for the threads sleeping on the shared
 		 * queue by giving them precedence and cleaning up the
 		 * exclusive waiters bit anyway.
+		 * Please note that lk_exslpfail count may be lying about
+		 * the real number of waiters with the LK_SLEEPFAIL flag on
+		 * because they may be used in conjuction with interruptible
+		 * sleeps so lk_exslpfail is consider as a 'upper limit'
+		 * bound, considering the edge cases.
 		 */
 		realexslp = sleepq_sleepcnt(&lk->lock_object,
 		    SQ_EXCLUSIVE_QUEUE);
@@ -943,6 +948,12 @@ __lockmgr_args(struct lock *lk, u_int fl
 			 * empty avoid a starvation for the threads sleeping
 			 * on the shared queue by giving them precedence
 			 * and cleaning up the exclusive waiters bit anyway.
+			 * Please note that lk_exslpfail count may be lying
+			 * about the real number of waiters with the
+			 * LK_SLEEPFAIL flag on because they may be used in
+			 * conjuction with interruptible sleeps so
+			 * lk_exslpfail is consider as a 'upper limit' bound,
+			 * considering the edge cases.
 			 */
 			MPASS((x & LK_EXCLUSIVE_SPINNERS) == 0);
 			realexslp = sleepq_sleepcnt(&lk->lock_object,
@@ -1046,6 +1057,13 @@ __lockmgr_args(struct lock *lk, u_int fl
 				 * threads sleeping on the shared queue by
 				 * giving them precedence and cleaning up the
 				 * exclusive waiters bit anyway.
+				 * Please note that lk_exslpfail count may be
+				 * lying about the real number of waiters with
+				 * the LK_SLEEPFAIL flag on because they may
+				 * be used in conjuction with interruptible
+				 * sleeps so lk_exslpfail is consider as a
+				 * 'upper limit' bound, considering the edge
+				 * cases.
 				 */
 				if (v & LK_EXCLUSIVE_WAITERS) {
 					queue = SQ_EXCLUSIVE_QUEUE;



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