File:  [CSRG BSD Unix] / 43BSDReno / sys / kdb / kdb_pcs.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:57 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD43reno
BSD 4.3reno

/*
 * Copyright (c) 1986, 1989 Regents of the University of California.
 * All rights reserved.  The Berkeley software License Agreement
 * specifies the terms and conditions for redistribution.
 *
 *	@(#)kdb_pcs.c	7.4 (Berkeley) 5/3/90
 */

#include "../kdb/defs.h"

char	*kdbNOBKPT;
char	*kdbSZBKPT;
char	*kdbEXBKPT;
char	*kdbBADMOD;

/* breakpoints */
BKPTR	kdbbkpthead;

char	*kdblp;
char	kdblastc;
extern	char *kdbmalloc();
long	kdbloopcnt;

/* sub process control */

kdbsubpcs(modif)
{
	register check, runmode;
	register BKPTR bkptr;
	register char *comptr;

	kdbloopcnt=kdbcntval;
	switch (modif) {

		/* delete breakpoint */
	case 'd': case 'D':
		if (bkptr=kdbscanbkpt((ADDR)kdbdot)) {
			bkptr->flag=0;
			return;
		}
		kdberror(kdbNOBKPT);

		/* set breakpoint */
	case 'b': case 'B':
		if (bkptr=kdbscanbkpt((ADDR)kdbdot))
			bkptr->flag=0;
		for (bkptr=kdbbkpthead; bkptr; bkptr=bkptr->nxtbkpt)
			if (bkptr->flag == 0)
				break;
		if (bkptr==0) {
			bkptr=(BKPTR)kdbmalloc(sizeof *bkptr);
			if (bkptr == (BKPTR)-1)
				kdberror(kdbSZBKPT);
			bkptr->nxtbkpt=kdbbkpthead;
			kdbbkpthead=bkptr;
		}
		bkptr->loc = kdbdot;
		bkptr->initcnt = bkptr->count = kdbcntval;
		bkptr->flag = BKPTSET;
		check=MAXCOM-1; comptr=bkptr->comm; (void) kdbrdc(); kdblp--;
		do
			*comptr++ = kdbreadchar();
		while (check-- && kdblastc!=EOR);
		*comptr=0; kdblp--;
		if (check)
			return;
		kdberror(kdbEXBKPT);

		/* single step */
	case 's': case 'S':
		runmode=SINGLE;
		break;

		/* continue */
	case 'c': case 'C':
		runmode=CONTIN;
		break;

		/* kill */
	case 'k': case 'K':
		reset(PANIC);
		/* NOTREACHED */

	default:
		kdberror(kdbBADMOD);
	}
	if (kdbloopcnt>0)
		kdbrunpcs(runmode, 0);
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.