📄 x_snap.c,v
字号:
head 1.1;access;symbols;locks dls:1.1; strict;comment @ * @;1.1date 97.09.21.19.29.03; author dls; state Dist;branches;next ;desc@@1.1log@pre-3e code@text@/* x_snap.c - x_snap */#include <conf.h>#include <kernel.h>#include <mem.h>LOCAL int snapreg;#define SNAPSIZ 512/*------------------------------------------------------------------------ * x_snap - (command snap) write snapshot of memory to a core file *------------------------------------------------------------------------ */COMMAND x_snap(stdin, stdout, stderr, nargs, args)int stdin, stdout, stderr, nargs;char *args[];{#ifndef FIXME fprintf(stderr,"snap: snap will be rewritten when a future release\n"); fprintf(stderr," determines the format of the core file\n");#else int dev; struct core11 hdr; char *p, *limit; unsigned len; if (nargs > 2) { fprintf(stderr, "use: snap [core-file]\n"); return(SYSERR); } p = nargs==1 ? "core11" : args[1]; if ((dev=open(NAMESPACE, p, "w")) == SYSERR) { fprintf(stderr, "snap: cannot write %s\n", p); return(SYSERR); } /* make up a core image using core11 structure heading format */ hdr.c_magic = COREMAGIC; hdr.c_size = hdr.c_zero1 = hdr.c_zero2 = hdr.c_zero3 = hdr.c_zero4 = hdr.c_zero5 = 0; /* Capture machine registers */ asm("mov r0,_snapreg"); hdr.c_regs[0] = snapreg; asm("mov r1,_snapreg"); hdr.c_regs[1] = snapreg; asm("mov r2,_snapreg"); hdr.c_regs[2] = snapreg; asm("mov r3,_snapreg"); hdr.c_regs[3] = snapreg; asm("mov r4,_snapreg"); hdr.c_regs[4] = snapreg; asm("mov r5,_snapreg"); hdr.c_regs[5] = snapreg; asm("mov sp,_snapreg"); hdr.c_regs[6] = snapreg; asm("mov pc,_snapreg"); hdr.c_regs[7] = snapreg; asm("clr _snapreg;mfps _snapreg"); hdr.c_psw = snapreg; fprintf(stderr, "Writing core image"); write(dev, &hdr, sizeof(struct core11)); /* Add contents of real memory to core image */ limit = (char *) ( 1 + (unsigned)maxaddr ); for (p=NULL ; p <= limit ; p += SNAPSIZ) { putc(stderr, '.'); len = 1 + ( (unsigned)limit - (unsigned)p ); if ( len > (unsigned) SNAPSIZ ) len = SNAPSIZ; write(dev, p, len); } putc(stderr, '\n'); close(dev); return(OK);#endif }@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -