Hi,
The ps flags are split between thread and process. It would be
useful if ddb shows both. I or them together in the ps overview
and list them explicitly for the specific thread.
ddb> show all procs
PID PPID PGRP UID S FLAGS WAIT COMMAND
18514 1 18514 0 3 0x40180 select sendmail
ddb> show proc 0xd317a460
PROC (sendmail) pid=18514 stat=sleep
flags process=40100<SUGID,SUGIDEXEC> proc=80<SINTR>
I also synced the ddb bit names with the define names.
ok?
bluhm
Index: kern/kern_proc.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/kern/kern_proc.c,v
retrieving revision 1.51
diff -u -p -u -p -r1.51 kern_proc.c
--- kern/kern_proc.c 8 Aug 2013 23:25:06 -0000 1.51
+++ kern/kern_proc.c 11 Aug 2013 03:29:35 -0000
@@ -395,8 +395,9 @@ proc_printit(struct proc *p, const char
else
pst = pstat[(int)p->p_stat - 1];
- (*pr)("PROC (%s) pid=%d stat=%s flags=%b\n",
- p->p_comm, p->p_pid, pst, p->p_flag, P_BITS);
+ (*pr)("PROC (%s) pid=%d stat=%s\n", p->p_comm, p->p_pid, pst);
+ (*pr)(" flags process=%b proc=%b\n",
+ p->p_p->ps_flags, P_BITS, p->p_flag, P_BITS);
(*pr)(" pri=%u, usrpri=%u, nice=%d\n",
p->p_priority, p->p_usrpri, p->p_p->ps_nice);
(*pr)(" forw=%p, list=%p,%p\n",
@@ -474,7 +475,8 @@ db_show_all_procs(db_expr_t addr, int ha
"%-12.12s %-16s\n",
ppr ? ppr->ps_pid : -1,
pr->ps_pgrp ? pr->ps_pgrp->pg_id : -1,
- pr->ps_cred->p_ruid, p->p_stat, p->p_flag,
+ pr->ps_cred->p_ruid, p->p_stat,
+ p->p_flag | p->p_p->ps_flags,
(p->p_wchan && p->p_wmesg) ?
p->p_wmesg : "", p->p_comm);
break;
Index: sys/proc.h
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/sys/proc.h,v
retrieving revision 1.168
diff -u -p -u -p -r1.168 proc.h
--- sys/proc.h 6 Jun 2013 13:09:37 -0000 1.168
+++ sys/proc.h 11 Aug 2013 02:51:13 -0000
@@ -412,12 +412,14 @@ struct proc {
#endif
#define P_BITS \
- ("\20\02CONTROLT\03INMEM\04SIGPAUSE\05PPWAIT\06PROFIL\07SELECT" \
- "\010SINTR\011SUGID\012SYSTEM\013TIMEOUT\014TRACED\015WAITED\016WEXIT" \
- "\017EXEC\020PWEUPC\021ISPWAIT\022COREDUMPING\023SUGIDEXEC\024SUSPSINGLE"
\
+ ("\20\01INKTR\02CONTROLT\03INMEM\04SIGSUSPEND" \
+ "\05PPWAIT\06PROFIL\07SELECT\010SINTR" \
+ "\011SUGID\012SYSTEM\013TIMEOUT\014TRACED" \
+ "\015WAITED\016WEXIT\017EXEC\020OWEUPC" \
+ "\021ISPWAIT\022COREDUMP\023SUGIDEXEC\024SUSPSINGLE" \
"\025NOZOMBIE\026INEXEC\027SYSTRACE\030CONTINUED" \
- "\031SINGLEEXIT\032SINGLEUNWIND" \
- "\033THREAD\034SUSPSIG\035SOFTDEP\036STOPPED\037CPUPEG")
+ "\031SINGLEEXIT\032SINGLEUNWIND\033THREAD\034SUSPSIG" \
+ "\035SOFTDEP\036STOPPED\037CPUPEG\040EXITING")
/* Macro to compute the exit signal to be delivered. */
#define P_EXITSIG(p) \