예제 #1
0
파일: setup.c 프로젝트: Requaos/harvey
void
attachprocess(void)
{
	char buf[100];
	Dir *sym, *mem;
	int fd;

	if (!adrflg) {
		dprint("used pid$a\n");
		return;
	}
	sym = dirfstat(fsym);
	sprint(buf, "/proc/%lu/mem", adrval);
	corfil = buf;
	setcor();
	sprint(buf, "/proc/%lu/text", adrval);
	fd = open(buf, OREAD);
	mem = nil;
	if (sym==nil || fd < 0 || (mem=dirfstat(fd))==nil
				|| sym->qid.path != mem->qid.path)
		dprint("warning: text images may be inconsistent\n");
	free(sym);
	free(mem);
	if (fd >= 0)
		close(fd);
}
예제 #2
0
파일: main.c 프로젝트: 00001/plan9port
void
main(int argc, char **argv)
{
	int omode;
	volatile int quiet;
	char *s;
	char *name;

	quiet = 0;
	name = 0;
	outputinit();
	maxoff = MAXOFF;
	omode = OREAD;
	ARGBEGIN{
	default:
		usage();
	case 'A':
		abort();
	case 'k':
		kflag = 1;
		break;
	case 'w':
		omode = ORDWR;
		break;
	case 'I':
		s = ARGF();
		if(s == 0)
			dprint("missing -I argument\n");
		else
			Ipath = s;
		break;
	case 'm':
		name = ARGF();
		if(name == 0)
			dprint("missing -m argument\n");
		break;
	case 'q':
		quiet = 1;
		break;
	}ARGEND

	attachargs(argc, argv, omode, !quiet);

	dotmap = dumbmap(-1);

	/*
	 * show initial state and drop into the execution loop.
	 */
	notify(fault);
	setsym();
	if(setjmp(env) == 0){
		if (pid || corhdr)
			setcor();	/* could get error */
		if (correg && !quiet) {
			dprint("%s\n", mach->exc(cormap, correg));
			printpc();
		}
	}

	setjmp(env);
	if (executing)
		delbp();
	executing = FALSE;
	for (;;) {
		flushbuf();
		if (errmsg) {
			dprint(errmsg);
			printc('\n');
			errmsg = 0;
			exitflg = 0;
		}
		if (mkfault) {
			mkfault=0;
			printc('\n');
			prints(DBNAME);
		}
		clrinp();
		rdc();
		reread();
		if (eof) {
			if (infile == STDIN)
				done();
			iclose(-1, 0);
			eof = 0;
			longjmp(env, 1);
		}
		exitflg = 0;
		command(0, 0);
		reread();
		if (rdc() != '\n')
			error("newline expected");
	}
}
예제 #3
0
void
bpwait(void)
{
	setcor();
	unloadnote();
}