Mon Apr 15 06:48:07 2024 UTC (25d)
Fix alignment of ddb 'ps/[lw]' output. LID matches PID and has more digits.


(skrll)
diff -r1.15 -r1.16 src/sys/ddb/db_proc.c

cvs diff -r1.15 -r1.16 src/sys/ddb/db_proc.c (expand / switch to unified diff)

--- src/sys/ddb/db_proc.c 2024/01/22 07:57:48 1.15
+++ src/sys/ddb/db_proc.c 2024/04/15 06:48:06 1.16
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: db_proc.c,v 1.15 2024/01/22 07:57:48 skrll Exp $ */ 1/* $NetBSD: db_proc.c,v 1.16 2024/04/15 06:48:06 skrll Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2009, 2020 The NetBSD Foundation, Inc. 4 * Copyright (c) 2009, 2020 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Andrew Doran. 8 * by Andrew Doran.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -51,27 +51,27 @@ @@ -51,27 +51,27 @@
51 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 51 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
52 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 52 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
53 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 53 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
54 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 54 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
55 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 55 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
56 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 56 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
57 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 57 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58 * SUCH DAMAGE. 58 * SUCH DAMAGE.
59 * 59 *
60 * from: kern_proc.c 8.4 (Berkeley) 1/4/94 60 * from: kern_proc.c 8.4 (Berkeley) 1/4/94
61 */ 61 */
62 62
63#include <sys/cdefs.h> 63#include <sys/cdefs.h>
64__KERNEL_RCSID(0, "$NetBSD: db_proc.c,v 1.15 2024/01/22 07:57:48 skrll Exp $"); 64__KERNEL_RCSID(0, "$NetBSD: db_proc.c,v 1.16 2024/04/15 06:48:06 skrll Exp $");
65 65
66#ifndef _KERNEL 66#ifndef _KERNEL
67#include <stdbool.h> 67#include <stdbool.h>
68#endif 68#endif
69 69
70#include <sys/param.h> 70#include <sys/param.h>
71#include <sys/cpu.h> 71#include <sys/cpu.h>
72#include <sys/proc.h> 72#include <sys/proc.h>
73#ifdef _KERNEL /* XXX */ 73#ifdef _KERNEL /* XXX */
74#include <sys/kauth.h> 74#include <sys/kauth.h>
75#endif 75#endif
76 76
77#include <ddb/ddb.h> 77#include <ddb/ddb.h>
@@ -143,35 +143,35 @@ db_show_all_procs(db_expr_t addr, bool h @@ -143,35 +143,35 @@ db_show_all_procs(db_expr_t addr, bool h
143 db_printf("\t/a == show process address info\n"); 143 db_printf("\t/a == show process address info\n");
144 db_printf("\t/l == show LWP info [default]\n"); 144 db_printf("\t/l == show LWP info [default]\n");
145 db_printf("\t/n == show normal process info\n"); 145 db_printf("\t/n == show normal process info\n");
146 db_printf("\t/w == show process wait/emul info\n"); 146 db_printf("\t/w == show process wait/emul info\n");
147 return; 147 return;
148 } 148 }
149 149
150 switch (*mode) { 150 switch (*mode) {
151 case 'a': 151 case 'a':
152 db_printf("PID %-16s %18s %18s %18s\n", 152 db_printf("PID %-16s %18s %18s %18s\n",
153 "COMMAND", "STRUCT PROC *", "UAREA *", "VMSPACE/VM_MAP"); 153 "COMMAND", "STRUCT PROC *", "UAREA *", "VMSPACE/VM_MAP");
154 break; 154 break;
155 case 'l': 155 case 'l':
156 db_printf("PID %4s S %3s %9s %18s %18s %-8s\n", 156 db_printf("PID %5s S %3s %9s %18s %18s %-8s\n",
157 "LID", "CPU", "FLAGS", "STRUCT LWP *", "NAME", "WAIT"); 157 "LID", "CPU", "FLAGS", "STRUCT LWP *", "NAME", "WAIT");
158 break; 158 break;
159 case 'n': 159 case 'n':
160 db_printf("PID %8s %8s %10s S %7s %4s %16s %7s\n", 160 db_printf("PID %8s %8s %10s S %7s %4s %16s %7s\n",
161 "PPID", "PGRP", "UID", "FLAGS", "LWPS", "COMMAND", "WAIT"); 161 "PPID", "PGRP", "UID", "FLAGS", "LWPS", "COMMAND", "WAIT");
162 break; 162 break;
163 case 'w': 163 case 'w':
164 db_printf("PID %4s %16s %8s %4s %-16s %s\n", 164 db_printf("PID %5s %16s %8s %4s %-16s %s\n",
165 "LID", "COMMAND", "EMUL", "PRI", "WAIT-MSG", 165 "LID", "COMMAND", "EMUL", "PRI", "WAIT-MSG",
166 "WAIT-CHANNEL"); 166 "WAIT-CHANNEL");
167 break; 167 break;
168 } 168 }
169 169
170 for (pp = db_proc_first(); pp != NULL; pp = db_proc_next(pp)) { 170 for (pp = db_proc_first(); pp != NULL; pp = db_proc_next(pp)) {
171 db_read_bytes((db_addr_t)pp, sizeof(p), (char *)&p); 171 db_read_bytes((db_addr_t)pp, sizeof(p), (char *)&p);
172 if (p.p_stat == 0) { 172 if (p.p_stat == 0) {
173 continue; 173 continue;
174 } 174 }
175 lp = p.p_lwps.lh_first; 175 lp = p.p_lwps.lh_first;
176 if (lp != NULL) { 176 if (lp != NULL) {
177 db_read_bytes((db_addr_t)lp, sizeof(l), (char *)&l); 177 db_read_bytes((db_addr_t)lp, sizeof(l), (char *)&l);
@@ -200,27 +200,27 @@ db_show_all_procs(db_expr_t addr, bool h @@ -200,27 +200,27 @@ db_show_all_procs(db_expr_t addr, bool h
200 if (l.l_cpu != NULL) { 200 if (l.l_cpu != NULL) {
201 db_read_bytes((db_addr_t) 201 db_read_bytes((db_addr_t)
202 &l.l_cpu->ci_data.cpu_index, 202 &l.l_cpu->ci_data.cpu_index,
203 sizeof(cpuno), (char *)&cpuno); 203 sizeof(cpuno), (char *)&cpuno);
204 } else 204 } else
205 cpuno = -1; 205 cpuno = -1;
206 if (l.l_wchan && l.l_wmesg) { 206 if (l.l_wchan && l.l_wmesg) {
207 db_read_string(l.l_wmesg, 207 db_read_string(l.l_wmesg,
208 sizeof(wbuf), wbuf); 208 sizeof(wbuf), wbuf);
209 wbuf[MAXCOMLEN] = '\0'; 209 wbuf[MAXCOMLEN] = '\0';
210 } else { 210 } else {
211 wbuf[0] = '\0'; 211 wbuf[0] = '\0';
212 } 212 }
213 db_printf("%c%4d %d %3d %9x %18lx %18s %-8s\n", 213 db_printf("%c%5d %d %3d %9x %18lx %18s %-8s\n",
214 (run ? '>' : ' '), l.l_lid, 214 (run ? '>' : ' '), l.l_lid,
215 l.l_stat, cpuno, l.l_flag, (long)lp, 215 l.l_stat, cpuno, l.l_flag, (long)lp,
216 db_nbuf, wbuf); 216 db_nbuf, wbuf);
217 lp = LIST_NEXT((&l), l_sibling); 217 lp = LIST_NEXT((&l), l_sibling);
218 if (lp != NULL) { 218 if (lp != NULL) {
219 db_printf("%-5d", p.p_pid); 219 db_printf("%-5d", p.p_pid);
220 db_read_bytes((db_addr_t)lp, sizeof(l), 220 db_read_bytes((db_addr_t)lp, sizeof(l),
221 (char *)&l); 221 (char *)&l);
222 } 222 }
223 } 223 }
224 break; 224 break;
225 case 'n': 225 case 'n':
226 db_read_bytes((db_addr_t)p.p_pgrp, sizeof(pgrp), 226 db_read_bytes((db_addr_t)p.p_pgrp, sizeof(pgrp),
@@ -252,27 +252,27 @@ db_show_all_procs(db_expr_t addr, bool h @@ -252,27 +252,27 @@ db_show_all_procs(db_expr_t addr, bool h
252 wbuf[MAXCOMLEN] = '\0'; 252 wbuf[MAXCOMLEN] = '\0';
253 } else { 253 } else {
254 wbuf[0] = '\0'; 254 wbuf[0] = '\0';
255 } 255 }
256 run = (l.l_stat == LSONPROC || 256 run = (l.l_stat == LSONPROC ||
257 (l.l_pflag & LP_RUNNING) != 0); 257 (l.l_pflag & LP_RUNNING) != 0);
258 db_read_bytes((db_addr_t)&p.p_emul->e_name, 258 db_read_bytes((db_addr_t)&p.p_emul->e_name,
259 sizeof(ename), (char *)&ename); 259 sizeof(ename), (char *)&ename);
260 260
261 db_read_string(ename, sizeof(db_nbuf), db_nbuf); 261 db_read_string(ename, sizeof(db_nbuf), db_nbuf);
262 db_nbuf[MAXCOMLEN] = '\0'; 262 db_nbuf[MAXCOMLEN] = '\0';
263 263
264 db_printf( 264 db_printf(
265 "%c%4d %16s %8s %4d %-16s %-18lx\n", 265 "%c%5d %16s %8s %4d %-16s %-18lx\n",
266 (run ? '>' : ' '), l.l_lid, 266 (run ? '>' : ' '), l.l_lid,
267 p.p_comm, db_nbuf, 267 p.p_comm, db_nbuf,
268 l.l_priority, wbuf, (long)l.l_wchan); 268 l.l_priority, wbuf, (long)l.l_wchan);
269 lp = LIST_NEXT((&l), l_sibling); 269 lp = LIST_NEXT((&l), l_sibling);
270 if (lp != NULL) { 270 if (lp != NULL) {
271 db_printf("%-5d", p.p_pid); 271 db_printf("%-5d", p.p_pid);
272 db_read_bytes((db_addr_t)lp, sizeof(l), 272 db_read_bytes((db_addr_t)lp, sizeof(l),
273 (char *)&l); 273 (char *)&l);
274 } 274 }
275 } 275 }
276 break; 276 break;
277 } 277 }
278 } 278 }