On 24/01/17(Tue) 10:08, Philip Guenther wrote: > On Tue, 24 Jan 2017, Martin Pieuchot wrote: > > Now that pfind(9) takes tid we need a way to show TID in ddb(4) ps > > output. Otherwise it's hard to use "ps /p" > > You mean "tr /p", right?
I do :) > Hmm, ps/n (the default) is the only of the ps subcommands to not show the > TID...so that it can show more columns of COMMAND. You've added 8 columns > without shrinking any of the existing ones, which will cause an unreadable > mess when it wraps around. Maybe drop PGRP from /n and we add a new one > that's more like (userspace) ps -j ? Here's the updated output. PID TID PPID UID S FLAGS WAIT COMMAND *97567 517976 11478 0 7 0x3 sysctl 11478 302289 1 0 3 0x10008b pause ksh 68659 470461 1 0 3 0x100098 poll cron I like the idea of "ps /j", I could also merge the information in the current "ps /w" since EMUL is always 'native' now. What do you think? ok for the diff below? Index: sys/kern/kern_proc.c =================================================================== RCS file: /cvs/src/sys/kern/kern_proc.c,v retrieving revision 1.73 diff -u -p -r1.73 kern_proc.c --- sys/kern/kern_proc.c 24 Jan 2017 00:58:55 -0000 1.73 +++ sys/kern/kern_proc.c 24 Jan 2017 01:36:05 -0000 @@ -471,8 +471,8 @@ db_show_all_procs(db_expr_t addr, int ha "COMMAND", "STRUCT PROC *", "UAREA *", "VMSPACE/VM_MAP"); break; case 'n': - db_printf(" PID %5s %5s %5s S %10s %-12s %-16s\n", - "PPID", "PGRP", "UID", "FLAGS", "WAIT", "COMMAND"); + db_printf(" PID %6s %5s %5s S %10s %-12s %-16s\n", + "TID", "PPID", "UID", "FLAGS", "WAIT", "COMMAND"); break; case 'w': db_printf(" TID %-16s %-8s %18s %s\n", @@ -497,8 +497,14 @@ db_show_all_procs(db_expr_t addr, int ha ci_schedstate.spc_idleproc == p) continue; } - db_printf("%c%5d ", p == curproc ? '*' : ' ', - *mode == 'n' ? pr->ps_pid : p->p_tid); + + if (*mode == 'n') { + db_printf("%c%5d ", (p == curproc ? + '*' : ' '), pr->ps_pid); + } else { + db_printf("%c%6d ", (p == curproc ? + '*' : ' '), p->p_tid); + } switch (*mode) { @@ -508,10 +514,9 @@ db_show_all_procs(db_expr_t addr, int ha break; case 'n': - db_printf("%5d %5d %5d %d %#10x " + db_printf("%6d %5d %5d %d %#10x " "%-12.12s %-16s\n", - ppr ? ppr->ps_pid : -1, - pr->ps_pgrp ? pr->ps_pgrp->pg_id : -1, + p->p_tid, ppr ? ppr->ps_pid : -1, pr->ps_ucred->cr_ruid, p->p_stat, p->p_flag | pr->ps_flags, (p->p_wchan && p->p_wmesg) ? Index: share/man/man4/ddb.4 =================================================================== RCS file: /cvs/src/share/man/man4/ddb.4,v retrieving revision 1.83 diff -u -p -r1.83 ddb.4 --- share/man/man4/ddb.4 24 Jan 2017 01:01:33 -0000 1.83 +++ share/man/man4/ddb.4 24 Jan 2017 01:45:48 -0000 @@ -833,8 +833,8 @@ Display information on all processes. .Xr ps 1 Ns \&-like format. Information printed includes process ID, thread ID, parent -process ID, process group, UID, process status, process flags, process -command name, and process wait channel message. +process ID, UID, process status, process flags, process +wait channel message and process command name. .It Cm /a Shows the kernel virtual addresses of each process' proc structure, u-area, and vmspace structure.