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

1990/1110/port/pgrp.c (diff list | history)

1990/0928/sys/src/9/port/pgrp.c:7,121990/1110/sys/src/9/port/pgrp.c:7,13 (short | long | prev | next)
1990/0227    
 
struct{ 
	Lock; 
1990/1110    
	Pgrp	*arena; 
1990/0227    
	Pgrp	*free; 
	ulong	pgrpid; 
}pgrpalloc; 
1990/0928/sys/src/9/port/pgrp.c:24,331990/1110/sys/src/9/port/pgrp.c:25,36
1990/0227    
	Pgrp *p; 
	Mount *m; 
 
	pgrpalloc.free = ialloc(conf.npgrp*sizeof(Pgrp), 0); 
1990/1110    
	pgrpalloc.arena = ialloc(conf.npgrp*sizeof(Pgrp), 0); 
	pgrpalloc.free = pgrpalloc.arena; 
1990/0227    
 
	p = pgrpalloc.free; 
1990/0825    
	for(i=0; i<conf.npgrp; i++,p++){ 
1990/1110    
		p->index = i; 
1990/0227    
		p->next = p+1; 
		p->mtab = ialloc(conf.nmtab*sizeof(Mtab), 0); 
		p->etab = ialloc(conf.npgenv*sizeof(Envp*), 0); 
1990/0928/sys/src/9/port/pgrp.c:43,481990/1110/sys/src/9/port/pgrp.c:46,88
1990/0227    
} 
 
Pgrp* 
1990/1110    
pgrptab(int i) 
{ 
	return &pgrpalloc.arena[i]; 
} 
 
void 
pgrpnote(Pgrp *pg, char *a, long n, int flag) 
{ 
	int i; 
	Proc *p; 
	char buf[ERRLEN]; 
 
	if(n >= ERRLEN-1) 
		error(0, Etoobig); 
	if(n>=4 && strncmp(a, "sys:", 4)==0) 
		error(0, Ebadarg); 
	memcpy(buf, a, n); 
	buf[n] = 0; 
	p = proctab(0); 
	for(i=0; i<conf.nproc; i++, p++){ 
		if(p->pgrp == pg){ 
			lock(&p->debug); 
			if(p->pid==0 || p->pgrp!=pg){ 
				unlock(&p->debug); 
				continue; 
			} 
			if(waserror()){ 
				unlock(&p->debug); 
				continue; 
			} 
			postnote(p, 0, buf, flag); 
			unlock(&p->debug); 
		} 
	} 
} 
 
Pgrp* 
1990/0227    
newpgrp(void) 
{ 
	Pgrp *p; 
1990/0928/sys/src/9/port/pgrp.c:76,811990/1110/sys/src/9/port/pgrp.c:116,123
1990/0227    
	Envp *ep; 
 
	if(decref(p) == 0){ 
1990/1110    
		lock(&p->debug); 
		p->pgrpid = -1; 
1990/0227    
		m = p->mtab; 
		for(i=0; i<p->nmtab; i++,m++) 
			if(m->c){ 
1990/0928/sys/src/9/port/pgrp.c:89,941990/1110/sys/src/9/port/pgrp.c:131,137
1990/0227    
		lock(&pgrpalloc); 
		p->next = pgrpalloc.free; 
		pgrpalloc.free = p; 
1990/1110    
		unlock(&p->debug); 
1990/0227    
		unlock(&pgrpalloc); 
	} 
} 


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