plan 9 kernel history: overview | file list | diff list

1992/0114/port/devproc.c (diff list | history)

1992/0111/sys/src/9/port/devproc.c:174,1801992/0114/sys/src/9/port/devproc.c:174,180 (short | long | prev | next)
1990/11211    
		c->pgrpid.vers = pg->pgrpid; 
1990/1110    
		break; 
1990/0227    
	default: 
		pprint("unknown qid in devopen\n"); 
1992/0114    
		pprint("procopen %lux\n", c->qid); 
1990/11211    
		error(Egreg); 
1990/0227    
	} 
1991/1110    
 
1992/0111/sys/src/9/port/devproc.c:349,3551992/0114/sys/src/9/port/devproc.c:349,355
1991/0705    
		if(offset+n > j) 
			n = j-offset; 
1991/1112    
		if(n == 0 && offset == 0) 
			errors("no segments"); 
1992/0114    
			exhausted("segments"); 
1991/0705    
		memmove(a, &statbuf[offset], n); 
		return n; 
1990/0227    
	} 
1992/0111/sys/src/9/port/devproc.c:392,3981992/0114/sys/src/9/port/devproc.c:392,398
1990/0227    
	switch(QID(c->qid)){ 
1991/1109    
	case Qmem: 
1991/1110    
		if(p->state != Stopped) 
			errors("not stopped"); 
1992/0114    
			error(Ebadctl); 
1991/1110    
 
1991/1124    
		if(offset >= USERADDR && offset <= USERADDR+BY2PG-1) { 
1991/1110    
			pg = p->upage; 
1992/0111/sys/src/9/port/devproc.c:411,4171992/0114/sys/src/9/port/devproc.c:411,417
1991/1111    
			ur = pxu->dbgreg; 
			if(offset < (ulong)ur || hi > (ulong)ur+sizeof(Ureg)) { 
1991/1110    
				kunmap(k); 
				errors("bad u-area address"); 
1992/0114    
				error(Ebadarg); 
1991/1110    
			} 
1991/1111    
			ur = (Ureg*)(b+((ulong)ur-USERADDR)); 
			setregisters(ur, b+(offset-USERADDR), a, n); 
1992/0111/sys/src/9/port/devproc.c:427,4331992/0114/sys/src/9/port/devproc.c:427,433
1991/1110    
 
1990/0227    
	case Qnote: 
1991/1112    
		if(p->kp) 
1991/1116    
			errors("can't note kproc"); 
1992/0114    
			error(Eperm); 
1990/0614    
		k = kmap(p->upage); 
		up = (User*)VA(k); 
1990/0227    
		if(up->p != p){ 
1992/0111/sys/src/9/port/devproc.c:441,4471992/0114/sys/src/9/port/devproc.c:441,447
1991/0318    
		memmove(buf, va, n); 
1990/0227    
		buf[n] = 0; 
		if(!postnote(p, 0, buf, NUser)) 
1990/11211    
			error(Enonote); 
1992/0114    
			exhausted("notes"); 
1990/0227    
		break; 
1991/1110    
 
1990/0227    
	default: 
1992/0111/sys/src/9/port/devproc.c:462,4681992/0114/sys/src/9/port/devproc.c:462,468
1991/1110    
 
	s = p->seg[TSEG]; 
1991/1112    
	if(s == 0) 
		errors("no text segment"); 
1992/0114    
		error(Enonexist); 
1991/1112    
	if(p->state==Dead) 
1991/1110    
		error(Eprocdied); 
 
1992/0111/sys/src/9/port/devproc.c:524,5301992/0114/sys/src/9/port/devproc.c:524,530
1991/1110    
	int pid; 
 
	if(p->pdbg) 
		errors("debugged already"); 
1992/0114    
		error(Einuse); 
1991/1110    
	if(procstopped(p)) 
		return; 
 
1992/0111/sys/src/9/port/devproc.c:573,5791992/0114/sys/src/9/port/devproc.c:573,579
1991/1112    
		procstopwait(p, 0); 
	else if(strncmp(buf, "startstop", 9) == 0) { 
1991/1110    
		if(p->state != Stopped) 
			errors("not stopped"); 
1992/0114    
			error(Ebadctl); 
1991/1110    
		p->procctl = Proc_traceme; 
		ready(p); 
		procstopwait(p, Proc_traceme); 
1992/0111/sys/src/9/port/devproc.c:580,5861992/0114/sys/src/9/port/devproc.c:580,586
1991/1110    
	} 
1991/1112    
	else if(strncmp(buf, "start", 5) == 0) { 
1991/1109    
		if(p->state != Stopped) 
			errors("not stopped"); 
1992/0114    
			error(Ebadctl); 
1991/1109    
		ready(p); 
	} 
1991/1112    
	else 
1992/0111/sys/src/9/port/devproc.c:607,6131992/0114/sys/src/9/port/devproc.c:607,613
1991/1113    
	for(;;) { 
		s = seg(p, offset, 1); 
		if(s == 0) 
			errors("not in address space"); 
1992/0114    
			error(Ebadarg); 
1991/1109    
 
1991/1113    
		if(offset+n >= s->top) 
			n = s->top-offset; 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)