svn commit: r239202 - head/sys/kern

David Xu davidxu at FreeBSD.org
Sat Aug 11 23:48:40 UTC 2012


Author: davidxu
Date: Sat Aug 11 23:48:39 2012
New Revision: 239202
URL: http://svn.freebsd.org/changeset/base/239202

Log:
  Some style fixes inspired by @bde.

Modified:
  head/sys/kern/kern_umtx.c

Modified: head/sys/kern/kern_umtx.c
==============================================================================
--- head/sys/kern/kern_umtx.c	Sat Aug 11 23:26:19 2012	(r239201)
+++ head/sys/kern/kern_umtx.c	Sat Aug 11 23:48:39 2012	(r239202)
@@ -587,7 +587,7 @@ abs_timeout_init2(struct abs_timeout *ti
 		&umtxtime->_timeout);
 }
 
-static void
+static inline void
 abs_timeout_update(struct abs_timeout *timo)
 {
 	kern_clock_gettime(curthread, timo->clockid, &timo->cur);
@@ -598,10 +598,10 @@ abs_timeout_gethz(struct abs_timeout *ti
 {
 	struct timespec tts;
 
+	if (timespeccmp(&timo->end, &timo->cur, <=))
+		return (-1); 
 	tts = timo->end;
 	timespecsub(&tts, &timo->cur);
-	if (tts.tv_sec < 0 || (tts.tv_sec == 0 && tts.tv_nsec == 0))
-		return (-1);
 	return (tstohz(&tts));
 }
 
@@ -610,29 +610,29 @@ abs_timeout_gethz(struct abs_timeout *ti
  * thread was removed from umtx queue.
  */
 static inline int
-umtxq_sleep(struct umtx_q *uq, const char *wmesg, struct abs_timeout *timo)
+umtxq_sleep(struct umtx_q *uq, const char *wmesg, struct abs_timeout *abstime)
 {
 	struct umtxq_chain *uc;
-	int error;
-	int pulse;
+	int error, timo;
 
 	uc = umtxq_getchain(&uq->uq_key);
 	UMTXQ_LOCKED_ASSERT(uc);
 	for (;;) {
 		if (!(uq->uq_flags & UQF_UMTXQ))
 			return (0);
-		if (timo != NULL) {
-			pulse = abs_timeout_gethz(timo);
-			if (pulse < 0)
+		if (abstime != NULL) {
+			timo = abs_timeout_gethz(abstime);
+			if (timo < 0)
 				return (ETIMEDOUT);
 		} else
-			pulse = 0;
-		error = msleep(uq, &uc->uc_lock, PCATCH|PDROP, wmesg, pulse);
+			timo = 0;
+		error = msleep(uq, &uc->uc_lock, PCATCH | PDROP, wmesg, timo);
 		if (error != EWOULDBLOCK) {
 			umtxq_lock(&uq->uq_key);
 			break;
 		}
-		abs_timeout_update(timo);
+		if (abstime != NULL)
+			abs_timeout_update(abstime);
 		umtxq_lock(&uq->uq_key);
 	}
 	return (error);


More information about the svn-src-all mailing list