Module Name: src
Committed By: christos
Date: Wed Feb 2 03:00:45 UTC 2011
Modified Files:
src/sys/kern: tty.c
Log Message:
fix locking and remove duplicate code.
To generate a diff of this commit:
cvs rdiff -u -r1.241 -r1.242 src/sys/kern/tty.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/tty.c
diff -u src/sys/kern/tty.c:1.241 src/sys/kern/tty.c:1.242
--- src/sys/kern/tty.c:1.241 Sun Jan 23 06:01:08 2011
+++ src/sys/kern/tty.c Tue Feb 1 22:00:44 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: tty.c,v 1.241 2011/01/23 11:01:08 mbalmer Exp $ */
+/* $NetBSD: tty.c,v 1.242 2011/02/02 03:00:44 christos Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.241 2011/01/23 11:01:08 mbalmer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.242 2011/02/02 03:00:44 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -2429,32 +2429,36 @@
mutex_enter(pick->p_lock);
LIST_FOREACH(l, &pick->p_lwps, l_sibling) {
+ const char *lp;
lwp_lock(l);
#ifdef LWP_PC
- if (l->l_stat == LSONPROC) {
- snprintf(lmsg, sizeof(lmsg), "%#"PRIxVADDR"/%d",
- (vaddr_t)LWP_PC(l), cpu_index(l->l_cpu));
- strlcat(buf, lmsg, bufsz);
- } else if (l->l_stat == LSRUN) {
- snprintf(lmsg, sizeof(lmsg), "%#"PRIxVADDR,
- (vaddr_t)LWP_PC(l));
- strlcat(buf, lmsg, bufsz);
- } else {
- strlcat(buf, l->l_wchan ? l->l_wmesg : "iowait", bufsz);
- }
- lwp_unlock(l);
- strlcat(buf, (LIST_NEXT(l, l_sibling) != NULL) ? " " : "] ",
- bufsz);
+#define FMT_RUN "%#"PRIxVADDR
+#define VAL_RUNNING (vaddr_t)LWP_PC(l)
+#define VAL_RUNABLE (vaddr_t)LWP_PC(l)
#else
- snprintf(lmsg, sizeof(lmsg), "%s%s",
- l->l_stat == LSONPROC ? "running" :
- l->l_stat == LSRUN ? "runnable" :
- l->l_wchan ? l->l_wmesg : "iowait",
- (LIST_NEXT(l, l_sibling) != NULL) ? " " : "] ");
- lwp_unlock(l);
- strlcat(buf, lmsg, bufsz);
+#define FMT_RUN "%s"
+#define VAL_RUNNING "running"
+#define VAL_RUNABLE "runnable"
#endif
+ switch (l->l_stat) {
+ case LSONPROC:
+ snprintf(lmsg, sizeof(lmsg), FMT_RUN"/%d", VAL_RUNNING,
+ cpu_index(l->l_cpu));
+ lp = lmsg;
+ break;
+ case LSRUN:
+ snprintf(lmsg, sizeof(lmsg), FMT_RUN, VAL_RUNABLE);
+ lp = lmsg;
+ break;
+ default:
+ lp = l->l_wchan ? l->l_wmesg : "iowait";
+ break;
+ }
+ strlcat(buf, lp, bufsz);
+ strlcat(buf, LIST_NEXT(l, l_sibling) != NULL ? " " : "] ",
+ bufsz);
pctcpu += l->l_pctcpu;
+ lwp_unlock(l);
}
pctcpu += pick->p_pctcpu;
calcru(pick, &utime, &stime, NULL, NULL);