Module Name: src
Committed By: ad
Date: Sat Apr 4 22:34:03 UTC 2009
Modified Files:
src/sys/kern: kern_lwp.c
Log Message:
Update the big comment block.
To generate a diff of this commit:
cvs rdiff -u -r1.128 -r1.129 src/sys/kern/kern_lwp.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/kern_lwp.c
diff -u src/sys/kern/kern_lwp.c:1.128 src/sys/kern/kern_lwp.c:1.129
--- src/sys/kern/kern_lwp.c:1.128 Tue Mar 3 21:55:06 2009
+++ src/sys/kern/kern_lwp.c Sat Apr 4 22:34:03 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_lwp.c,v 1.128 2009/03/03 21:55:06 rmind Exp $ */
+/* $NetBSD: kern_lwp.c,v 1.129 2009/04/04 22:34:03 ad Exp $ */
/*-
* Copyright (c) 2001, 2006, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -86,7 +86,7 @@
* LSZOMB:
*
* Dead or dying: the LWP has released most of its resources
- * and is: a) about to switch away into oblivion b) has already
+ * and is about to switch away into oblivion, or has already
* switched away. When it switches away, its few remaining
* resources can be collected.
*
@@ -121,22 +121,23 @@
* LWPs may transition states in the following ways:
*
* RUN -------> ONPROC ONPROC -----> RUN
- * > STOPPED > SLEEP
- * > SUSPENDED > STOPPED
+ * > SLEEP
+ * > STOPPED
* > SUSPENDED
* > ZOMB
+ * > IDL (special cases)
*
* STOPPED ---> RUN SUSPENDED --> RUN
- * > SLEEP > SLEEP
+ * > SLEEP
*
* SLEEP -----> ONPROC IDL --------> RUN
* > RUN > SUSPENDED
* > STOPPED > STOPPED
- * > SUSPENDED
+ * > ONPROC (special cases)
*
- * Other state transitions are possible with kernel threads (eg
- * ONPROC -> IDL), but only happen under tightly controlled
- * circumstances the side effects are understood.
+ * Some state transitions are only possible with kernel threads (eg
+ * ONPROC -> IDL) and happen under tightly controlled circumstances
+ * free of unwanted side effects.
*
* Migration
*
@@ -162,17 +163,17 @@
* LSONPROC, LSZOMB:
*
* Always covered by spc_lwplock, which protects running LWPs.
- * This is a per-CPU lock.
+ * This is a per-CPU lock and matches lwp::l_cpu.
*
* LSIDL, LSRUN:
*
* Always covered by spc_mutex, which protects the run queues.
- * This is a per-CPU lock.
+ * This is a per-CPU lock and matches lwp::l_cpu.
*
* LSSLEEP:
*
* Covered by a lock associated with the sleep queue that the
- * LWP resides on.
+ * LWP resides on. Matches lwp::l_sleepq::sq_mutex.
*
* LSSTOP, LSSUSPENDED:
*
@@ -196,17 +197,20 @@
*
* LSIDL, LSZOMB, LSSTOP, LSSUSPENDED
*
+ * (But not always for kernel threads. There are some special cases
+ * as mentioned above. See kern_softint.c.)
+ *
* Note that an LWP is considered running or likely to run soon if in
* one of the following states. This affects the value of p_nrlwps:
*
* LSRUN, LSONPROC, LSSLEEP
*
* p_lock does not need to be held when transitioning among these
- * three states.
+ * three states, hence p_lock is rarely taken for state transitions.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.128 2009/03/03 21:55:06 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.129 2009/04/04 22:34:03 ad Exp $");
#include "opt_ddb.h"
#include "opt_lockdebug.h"