|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1986, 1989 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)kdb_pcs.c 7.4 (Berkeley) 5/3/90 ! 7: */ ! 8: ! 9: #include "../kdb/defs.h" ! 10: ! 11: char *kdbNOBKPT; ! 12: char *kdbSZBKPT; ! 13: char *kdbEXBKPT; ! 14: char *kdbBADMOD; ! 15: ! 16: /* breakpoints */ ! 17: BKPTR kdbbkpthead; ! 18: ! 19: char *kdblp; ! 20: char kdblastc; ! 21: extern char *kdbmalloc(); ! 22: long kdbloopcnt; ! 23: ! 24: /* sub process control */ ! 25: ! 26: kdbsubpcs(modif) ! 27: { ! 28: register check, runmode; ! 29: register BKPTR bkptr; ! 30: register char *comptr; ! 31: ! 32: kdbloopcnt=kdbcntval; ! 33: switch (modif) { ! 34: ! 35: /* delete breakpoint */ ! 36: case 'd': case 'D': ! 37: if (bkptr=kdbscanbkpt((ADDR)kdbdot)) { ! 38: bkptr->flag=0; ! 39: return; ! 40: } ! 41: kdberror(kdbNOBKPT); ! 42: ! 43: /* set breakpoint */ ! 44: case 'b': case 'B': ! 45: if (bkptr=kdbscanbkpt((ADDR)kdbdot)) ! 46: bkptr->flag=0; ! 47: for (bkptr=kdbbkpthead; bkptr; bkptr=bkptr->nxtbkpt) ! 48: if (bkptr->flag == 0) ! 49: break; ! 50: if (bkptr==0) { ! 51: bkptr=(BKPTR)kdbmalloc(sizeof *bkptr); ! 52: if (bkptr == (BKPTR)-1) ! 53: kdberror(kdbSZBKPT); ! 54: bkptr->nxtbkpt=kdbbkpthead; ! 55: kdbbkpthead=bkptr; ! 56: } ! 57: bkptr->loc = kdbdot; ! 58: bkptr->initcnt = bkptr->count = kdbcntval; ! 59: bkptr->flag = BKPTSET; ! 60: check=MAXCOM-1; comptr=bkptr->comm; (void) kdbrdc(); kdblp--; ! 61: do ! 62: *comptr++ = kdbreadchar(); ! 63: while (check-- && kdblastc!=EOR); ! 64: *comptr=0; kdblp--; ! 65: if (check) ! 66: return; ! 67: kdberror(kdbEXBKPT); ! 68: ! 69: /* single step */ ! 70: case 's': case 'S': ! 71: runmode=SINGLE; ! 72: break; ! 73: ! 74: /* continue */ ! 75: case 'c': case 'C': ! 76: runmode=CONTIN; ! 77: break; ! 78: ! 79: /* kill */ ! 80: case 'k': case 'K': ! 81: reset(PANIC); ! 82: /* NOTREACHED */ ! 83: ! 84: default: ! 85: kdberror(kdbBADMOD); ! 86: } ! 87: if (kdbloopcnt>0) ! 88: kdbrunpcs(runmode, 0); ! 89: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.