Author: kib
Date: Wed Sep 16 21:34:18 2020
New Revision: 365811
URL: https://svnweb.freebsd.org/changeset/base/365811

Log:
  Improve ddb 'show pgrpdump' command.
  
  Use ddb pager.
  Make lines more compact.
  Eliminate unneeded casts.
  Print more job-control related info when reporting process group.
  
  Tested by:    pho
  Sponsored by: The FreeBSD Foundation
  MFC after:    1 week
  Differential revision:        https://reviews.freebsd.org/D26416

Modified:
  head/sys/kern/kern_proc.c

Modified: head/sys/kern/kern_proc.c
==============================================================================
--- head/sys/kern/kern_proc.c   Wed Sep 16 21:28:18 2020        (r365810)
+++ head/sys/kern/kern_proc.c   Wed Sep 16 21:34:18 2020        (r365811)
@@ -995,6 +995,16 @@ sess_release(struct session *s)
 
 #ifdef DDB
 
+static void
+db_print_pgrp_one(struct pgrp *pgrp, struct proc *p)
+{
+       db_printf(
+           "    pid %d at %p pr %d pgrp %p e %d jc %d\n",
+           p->p_pid, p, p->p_pptr == NULL ? -1 : p->p_pptr->p_pid,
+           p->p_pgrp, (p->p_treeflag & P_TREE_GRPEXITED) != 0,
+           p->p_pptr == NULL ? 0 : isjobproc(p->p_pptr, pgrp));
+}
+
 DB_SHOW_COMMAND(pgrpdump, pgrpdump)
 {
        struct pgrp *pgrp;
@@ -1003,19 +1013,15 @@ DB_SHOW_COMMAND(pgrpdump, pgrpdump)
 
        for (i = 0; i <= pgrphash; i++) {
                if (!LIST_EMPTY(&pgrphashtbl[i])) {
-                       printf("\tindx %d\n", i);
+                       db_printf("indx %d\n", i);
                        LIST_FOREACH(pgrp, &pgrphashtbl[i], pg_hash) {
-                               printf(
-                       "\tpgrp %p, pgid %ld, sess %p, sesscnt %d, mem %p\n",
-                                   (void *)pgrp, (long)pgrp->pg_id,
-                                   (void *)pgrp->pg_session,
+                               db_printf(
+                       "  pgrp %p, pgid %d, sess %p, sesscnt %d, mem %p\n",
+                                   pgrp, (int)pgrp->pg_id, pgrp->pg_session,
                                    pgrp->pg_session->s_count,
-                                   (void *)LIST_FIRST(&pgrp->pg_members));
-                               LIST_FOREACH(p, &pgrp->pg_members, p_pglist) {
-                                       printf("\t\tpid %ld addr %p pgrp %p\n", 
-                                           (long)p->p_pid, (void *)p,
-                                           (void *)p->p_pgrp);
-                               }
+                                   LIST_FIRST(&pgrp->pg_members));
+                               LIST_FOREACH(p, &pgrp->pg_members, p_pglist)
+                                       db_print_pgrp_one(pgrp, p);
                        }
                }
        }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to