tune up $l format
[unix-history] / usr / src / sys / deprecated / kdb / kdb_print.c
index 3533f8c..ea11163 100644 (file)
@@ -3,10 +3,17 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)kdb_print.c 7.5 (Berkeley) %G%
+ *     @(#)kdb_print.c 7.10 (Berkeley) %G%
  */
 
  */
 
+#include "machine/mtpr.h"
+#undef ISP
 #include "../kdb/defs.h"
 #include "../kdb/defs.h"
+#undef CTRL
+#include "ioctl.h"
+#include "tty.h"
+#include "vnode.h"
+#include "../ufs/inode.h"
 
 char   *BADRAD;
 
 
 char   *BADRAD;
 
@@ -35,7 +42,7 @@ printtrace(modif)
        register ADDR argp, frame;
        register struct nlist *sp;
        int ntramp;
        register ADDR argp, frame;
        register struct nlist *sp;
        int ntramp;
-       register struct  proc *p;
+       register struct proc *p;
        extern struct proc *allproc;
 
        if (cntflg==0)
        extern struct proc *allproc;
 
        if (cntflg==0)
@@ -107,6 +114,8 @@ printtrace(modif)
                        }
                        printf("%s(", name);
                        narg = getnargs(frame);
                        }
                        printf("%s(", name);
                        narg = getnargs(frame);
+                       if (narg > 10)
+                               narg = 10;
                        argp = frame;
                        if (ntramp != 1)
                                while (narg) {
                        argp = frame;
                        if (ntramp != 1)
                                while (narg) {
@@ -164,20 +173,73 @@ printtrace(modif)
                        }
                break;
 
                        }
                break;
 
-       case 'l':
+       case 'i': {
+               register struct inode *ip;
+
+               printf("Locked inodes\n");
+               for (ip = inode; ip < inodeNINODE; ip++) {
+                       if ((ip->i_flag & ILOCKED) == 0)
+                               continue;
+                       printf("inode %d dev 0x%x type %d\n", ip->i_number,
+                               ip->i_dev, ITOV(ip)->v_type);
+               }
+               break;
+       }
+
+       case 'k':
+               panic("kdb requested panic");
+               /* NOTREACHED */
+
+       case 'l': {
+               struct pte savemmap;
+               extern char vmmap[];
+
+               savemmap = mmap[0];
                for (p = allproc; p; p = p->p_nxt) {
                for (p = allproc; p; p = p->p_nxt) {
-                       printf("%X pid %5d %c", p, p->p_pid,
+                       printf("%X pid %5d%c%5d %c ", p, p->p_pid,
+                               p == (struct proc *)var[varchk('p')]? '*' : ' ',
+                               p->p_ppid,
                                p->p_stat == SSLEEP ? 'S' :
                                p->p_stat == SRUN ? 'R':
                                p->p_stat == SIDL ? 'I':
                                p->p_stat == SSTOP ? 'T' : '?');
                                p->p_stat == SSLEEP ? 'S' :
                                p->p_stat == SRUN ? 'R':
                                p->p_stat == SIDL ? 'I':
                                p->p_stat == SSTOP ? 'T' : '?');
-                       if (p->p_wchan) {
-                               printf(" wait ");
+                       if (p->p_wchan)
                                psymoff((long)p->p_wchan, ISYM, "");
                                psymoff((long)p->p_wchan, ISYM, "");
+                       if ((p->p_flag & SLOAD) && p->p_addr) {
+                               int i;
+                               *(int *)mmap = *(int *)p->p_addr;
+                               mtpr(TBIS, vmmap);
+#define U      ((struct user *)vmmap)
+#ifdef not_until_uarea_completely_mapped
+                               if (U->u_ttyp)
+                                       printf(" ctty %x ", U->u_ttyp);
+#endif
+                               printf(" %.8s ", U->u_comm);
+#undef U
                        }
                        }
+
                        printc(EOR);
                }
                        printc(EOR);
                }
+               mmap[0] = savemmap;
+               mtpr(TBIS, vmmap);
                break;
                break;
+       }
+
+       case 't':       /* XXX - debug */
+               if (adrflg) {
+                     printf("dev       state  rawq   canq  outq  lwat hwat\n");
+
+#define T      ((struct tty *)adrval)  
+                       printf("%x  %x %d %d %d %d %d\n", T->t_dev, 
+                               T->t_state, T->t_rawq.c_cc, 
+                               T->t_canq.c_cc, T->t_outq.c_cc,
+                               T->t_lowat, T->t_hiwat);
+              printf(" &rawq    &canq      &outq    &outq.c_cf  &rawq.c_cf\n");
+                       printf(" %x %x  %x %x %x \n", &T->t_rawq, 
+                               &T->t_canq, &T->t_outq, &T->t_outq.c_cf, 
+                               &T->t_rawq.c_cf);
+#undef T
+               }
 
        default:
                error(BADMOD);
 
        default:
                error(BADMOD);