⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dmp.c

📁 一个简单的操作系统minix的核心代码
💻 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 + -