📄 dmp.c
字号:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/kernel/dmp.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
14600 /* This file contains some dumping routines for debugging. */
14601
14602 #include "kernel.h"
14603 #include <minix/com.h>
14604 #include "proc.h"
14605
14606 char *vargv;
14607
14608 FORWARD _PROTOTYPE(char *proc_name, (int proc_nr));
14609
14610 /*===========================================================================*
14611 * p_dmp *
14612 *===========================================================================*/
14613 PUBLIC void p_dmp()
14614 {
14615 /* Proc table dump */
14616
14617 register struct proc *rp;
14618 static struct proc *oldrp = BEG_PROC_ADDR;
14619 int n = 0;
14620 phys_clicks text, data, size;
14621 int proc_nr;
14622
14623 printf("\n--pid --pc- ---sp- flag -user --sys-- -text- -data- -size- -recv- command\n");
14624
14625 for (rp = oldrp; rp < END_PROC_ADDR; rp++) {
14626 proc_nr = proc_number(rp);
14627 if (rp->p_flags & P_SLOT_FREE) continue;
14628 if (++n > 20) break;
14629 text = rp->p_map[T].mem_phys;
14630 data = rp->p_map[D].mem_phys;
14631 size = rp->p_map[T].mem_len
14632 + ((rp->p_map[S].mem_phys + rp->p_map[S].mem_len) - data);
14633 printf("%5d %5lx %6lx %2x %7U %7U %5uK %5uK %5uK ",
14634 proc_nr < 0 ? proc_nr : rp->p_pid,
14635 (unsigned long) rp->p_reg.pc,
14636 (unsigned long) rp->p_reg.sp,
14637 rp->p_flags,
14638 rp->user_time, rp->sys_time,
14639 click_to_round_k(text), click_to_round_k(data),
14640 click_to_round_k(size));
14641 if (rp->p_flags & RECEIVING) {
14642 printf("%-7.7s", proc_name(rp->p_getfrom));
14643 } else
14644 if (rp->p_flags & SENDING) {
14645 printf("S:%-5.5s", proc_name(rp->p_sendto));
14646 } else
14647 if (rp->p_flags == 0) {
14648 printf(" ");
14649 }
14650 printf("%s\n", rp->p_name);
14651 }
14652 if (rp == END_PROC_ADDR) rp = BEG_PROC_ADDR; else printf("--more--\r");
14653 oldrp = rp;
14654 }
14657 /*===========================================================================*
14658 * map_dmp *
14659 *===========================================================================*/
14660 PUBLIC void map_dmp()
14661 {
14662 register struct proc *rp;
14663 static struct proc *oldrp = cproc_addr(HARDWARE);
14664 int n = 0;
14665 phys_clicks size;
14666
14667 printf("\nPROC NAME- -----TEXT----- -----DATA----- ----STACK----- -SIZE-\n");
14668 for (rp = oldrp; rp < END_PROC_ADDR; rp++) {
14669 if (rp->p_flags & P_SLOT_FREE) continue;
14670 if (++n > 20) break;
14671 size = rp->p_map[T].mem_len
14672 + ((rp->p_map[S].mem_phys + rp->p_map[S].mem_len)
14673 - rp->p_map[D].mem_phys);
14674 printf("%3d %-6.6s %4x %4x %4x %4x %4x %4x %4x %4x %4x %5uK\n",
14675 proc_number(rp),
14676 rp->p_name,
14677 rp->p_map[T].mem_vir, rp->p_map[T].mem_phys, rp->p_map[T].mem_len,
14678 rp->p_map[D].mem_vir, rp->p_map[D].mem_phys, rp->p_map[D].mem_len,
14679 rp->p_map[S].mem_vir, rp->p_map[S].mem_phys, rp->p_map[S].mem_len,
14680 click_to_round_k(size));
14681 }
14682 if (rp == END_PROC_ADDR) rp = cproc_addr(HARDWARE); else printf("--more--\r");
14683 oldrp = rp;
14684 }
14687 /*===========================================================================*
14688 * proc_name *
14689 *===========================================================================*/
14690 PRIVATE char *proc_name(proc_nr)
14691 int proc_nr;
14692 {
14693 if (proc_nr == ANY) return "ANY";
14694 return proc_addr(proc_nr)->p_name;
14695 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -