Enhance the 'ps' command so that it prints a line per proc and a line

per thread, so that instead of repeating the same info for all threads
in proc, it would print thread specific info. Also includes thread number
that would match 'info threads' info and can be used as argument for
thread swithcing with 'thread' command.
This commit is contained in:
glebius 2019-09-25 18:03:15 +00:00
parent dd20cd52c2
commit 3988008507

View File

@ -199,28 +199,29 @@ define ps
set $nproc = nprocs set $nproc = nprocs
set $aproc = allproc.lh_first set $aproc = allproc.lh_first
set $proc = allproc.lh_first set $proc = allproc.lh_first
printf " pid proc uid ppid pgrp flag stat comm wchan\n" set $tid = 1
printf "pid/ID ppid/tid uid pgrp flag st comm/name proc/thread\n"
while (--$nproc >= 0) while (--$nproc >= 0)
set $pptr = $proc.p_pptr set $pptr = $proc.p_pptr
if ($pptr == 0) if ($pptr == 0)
set $pptr = $proc set $pptr = $proc
end end
if ($proc.p_state) if ($proc.p_state)
printf " %5d %6d %4d %5d %8x %2d %-10s %p\n", \
$proc.p_pid, $pptr->p_pid, \
$proc.p_ucred->cr_ruid, \
$proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_state, \
&$proc.p_comm[0], $aproc
set $thread = $proc->p_threads.tqh_first set $thread = $proc->p_threads.tqh_first
while ($thread) while ($thread)
printf "%5d %08x %4d %5d %5d %06x %d %-10s ", \ printf "(%5d) %6d %-10s %p", \
$proc.p_pid, $aproc, \ $tid, $thread->td_tid, $thread->td_name, $thread
$proc.p_ucred->cr_ruid, $pptr->p_pid, \ if ($thread.td_wmesg)
$proc.p_pgrp->pg_id, $proc.p_flag, $proc.p_state, \ printf " %s", $thread.td_wmesg
&$proc.p_comm[0]
if ($thread.td_wchan)
if ($thread.td_wmesg)
printf "%s ", $thread.td_wmesg
end
printf "%x", $thread.td_wchan
end end
printf "\n" printf "\n"
set $thread = $thread->td_plist.tqe_next set $thread = $thread->td_plist.tqe_next
set $tid = $tid + 1
end end
end end
set $aproc = $proc.p_list.le_next set $aproc = $proc.p_list.le_next