x_snap.c
来自「TCP-IP红宝书源代码」· C语言 代码 · 共 72 行
C
72 行
/* 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 + =
减小字号Ctrl + -
显示快捷键?