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

1990/1106/gnot/devproc.c (diff list | history)

1990/0617/sys/src/9/gnot/devproc.c:12,171990/1106/sys/src/9/gnot/devproc.c:12,18 (short | long | prev | next)
1990/03091    
	Qctl, 
	Qmem, 
	Qnote, 
1990/1106    
	Qnotepg, 
1990/03091    
	Qproc, 
	Qstatus, 
	Qtext, 
1990/0617/sys/src/9/gnot/devproc.c:21,261990/1106/sys/src/9/gnot/devproc.c:22,28
1990/03091    
	"ctl",		Qctl,		0,			0600, 
	"mem",		Qmem,		0,			0600, 
	"note",		Qnote,		0,			0600, 
1990/1106    
	"notepg",	Qnotepg,	0,			0200, 
1990/03091    
	"proc",		Qproc,		sizeof(Proc),		0600, 
	"status",	Qstatus,	NAMELEN+12+6*12,	0600, 
	"text",		Qtext,		0,			0600, 
1990/0617/sys/src/9/gnot/devproc.c:108,1131990/1106/sys/src/9/gnot/devproc.c:110,116
1990/03091    
procopen(Chan *c, int omode) 
{ 
	Proc *p; 
1990/1106    
	Pgrp *pg; 
1990/03091    
	Orig *o; 
	Chan *tc; 
 
1990/0617/sys/src/9/gnot/devproc.c:117,1221990/1106/sys/src/9/gnot/devproc.c:120,126
1990/03091    
		goto done; 
	} 
	p = proctab(SLOT(c->qid)); 
1990/1106    
	pg = p->pgrp; 
1990/03091    
	if((p->pid&PIDMASK) != PID(c->qid)) 
    Died: 
		error(0, Eprocdied); 
1990/0617/sys/src/9/gnot/devproc.c:146,1561990/1106/sys/src/9/gnot/devproc.c:150,167
1990/03091    
	case Qctl: 
	case Qnote: 
		break; 
1990/1106    
 
	case Qnotepg: 
		if(omode != OWRITE) 
			error(0, Eperm); 
		c->pgrpid = (pg->pgrpid<<PIDSHIFT)|((pg->index+1)<<QSHIFT); 
		break; 
 
1990/03091    
	case Qdir: 
	case Qmem: 
	case Qproc: 
	case Qstatus: 
		if(omode!=OREAD) 
1990/1106    
		if(omode != OREAD) 
1990/03091    
			error(0, Eperm); 
		break; 
	default: 
1990/0617/sys/src/9/gnot/devproc.c:347,3521990/1106/sys/src/9/gnot/devproc.c:358,364
1990/03091    
procwrite(Chan *c, void *va, long n) 
{ 
	Proc *p; 
1990/1106    
	Pgrp *pg; 
1990/03091    
	User *up; 
1990/06021    
	KMap *k; 
1990/03091    
	char buf[ERRLEN]; 
1990/0617/sys/src/9/gnot/devproc.c:353,3581990/1106/sys/src/9/gnot/devproc.c:365,390
1990/03091    
 
	if(c->qid & CHDIR) 
		error(0, Eisdir); 
1990/1106    
 
	/* 
	 * Special case: don't worry about process, just use remembered group 
	 */ 
	if(QID(c->qid) == Qnotepg){ 
		pg = pgrptab(SLOT(c->pgrpid)); 
		lock(&pg->debug); 
		if(waserror()){ 
			unlock(&pg->debug); 
			nexterror(); 
		} 
		if((pg->pgrpid&PIDMASK) != PID(c->pgrpid)){ 
			unlock(&pg->debug); 
  	  		goto Died; 
		} 
		pgrpnote(pg, va, n, NUser); 
		unlock(&pg->debug); 
		return n; 
	} 
 
1990/03091    
	p = proctab(SLOT(c->qid)); 
	lock(&p->debug); 
	if(waserror()){ 


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