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

2002/0405/port/devenv.c (diff list | history)

2002/0109/sys/src/9/port/devenv.c:27,392002/0405/sys/src/9/port/devenv.c:27,38 (short | long | prev | next)
1999/1230    
	} 
 
2002/0109    
	eg = envgrp(c); 
1992/0623    
	qlock(eg); 
                 
2002/0405    
	rlock(eg); 
1992/0623    
	for(e = eg->entries; e && s; e = e->link) 
		s--; 
 
	if(e == 0) { 
		qunlock(eg); 
2002/0405    
		runlock(eg); 
1992/0623    
		return -1; 
1990/0227    
	} 
1992/0623    
 
2002/0109/sys/src/9/port/devenv.c:40,462002/0405/sys/src/9/port/devenv.c:39,45
2001/0527    
	/* make sure name string continues to exist after we release lock */ 
	kstrcpy(up->genbuf, e->name, sizeof up->genbuf); 
	devdir(c, e->qid, up->genbuf, e->len, eve, 0666, dp); 
1992/0623    
	qunlock(eg); 
2002/0405    
	runlock(eg); 
1992/0623    
	return 1; 
1990/0227    
} 
 
2002/0109/sys/src/9/port/devenv.c:100,1092002/0405/sys/src/9/port/devenv.c:99,108
1992/0623    
	else { 
2002/0109    
		if(omode != OREAD && !envwriteable(c)) 
			error(Eperm); 
1992/0623    
		qlock(eg); 
2002/0405    
		rlock(eg); 
1999/0122    
		e = envlookup(eg, nil, c->qid.path); 
1992/0623    
		if(e == 0) { 
			qunlock(eg); 
2002/0405    
			runlock(eg); 
1991/1018    
			error(Enonexist); 
1990/0227    
		} 
1999/0122    
		if((omode & OTRUNC) && e->value) { 
2002/0109/sys/src/9/port/devenv.c:112,1182002/0405/sys/src/9/port/devenv.c:111,117
1992/0623    
			e->value = 0; 
			e->len = 0; 
1990/0227    
		} 
1992/0623    
		qunlock(eg); 
2002/0405    
		runlock(eg); 
1990/0227    
	} 
1992/0623    
	c->mode = openmode(omode); 
1990/0227    
	c->flag |= COPEN; 
2002/0109/sys/src/9/port/devenv.c:132,1402002/0405/sys/src/9/port/devenv.c:131,139
1991/1018    
	omode = openmode(omode); 
2002/0109    
	eg = envgrp(c); 
1992/0623    
 
	qlock(eg); 
2002/0405    
	wlock(eg); 
1992/0623    
	if(waserror()) { 
		qunlock(eg); 
2002/0405    
		wunlock(eg); 
1992/0623    
		nexterror(); 
1990/0227    
	} 
1992/0623    
 
2002/0109/sys/src/9/port/devenv.c:152,1582002/0405/sys/src/9/port/devenv.c:151,157
1992/0623    
	eg->entries = e; 
1999/0122    
	c->qid = e->qid; 
1998/0512    
 
1992/0623    
	qunlock(eg); 
2002/0405    
	wunlock(eg); 
1992/0623    
	poperror(); 
 
1990/0227    
	c->offset = 0; 
2002/0109/sys/src/9/port/devenv.c:170,1762002/0405/sys/src/9/port/devenv.c:169,175
1990/11211    
		error(Eperm); 
1992/0623    
 
2002/0109    
	eg = envgrp(c); 
1992/0623    
	qlock(eg); 
2002/0405    
	wlock(eg); 
1992/0623    
	l = &eg->entries; 
	for(e = *l; e; e = e->link) { 
1999/0122    
		if(e->qid.path == c->qid.path) 
2002/0109/sys/src/9/port/devenv.c:179,1912002/0405/sys/src/9/port/devenv.c:178,190
1992/0623    
	} 
 
	if(e == 0) { 
		qunlock(eg); 
2002/0405    
		wunlock(eg); 
1990/11211    
		error(Enonexist); 
1990/0227    
	} 
1992/0623    
 
	*l = e->link; 
1999/0122    
	eg->vers++; 
1992/0623    
	qunlock(eg); 
2002/0405    
	wunlock(eg); 
1992/0623    
	free(e->name); 
	if(e->value) 
		free(e->value); 
2002/0109/sys/src/9/port/devenv.c:215,2242002/0405/sys/src/9/port/devenv.c:214,223
1990/0227    
		return devdirread(c, a, n, 0, 0, envgen); 
1992/0623    
 
2002/0109    
	eg = envgrp(c); 
1992/0623    
	qlock(eg); 
2002/0405    
	rlock(eg); 
1999/0122    
	e = envlookup(eg, nil, c->qid.path); 
1992/0623    
	if(e == 0) { 
		qunlock(eg); 
2002/0405    
		rlock(eg); 
1991/1018    
		error(Enonexist); 
1990/0227    
	} 
1992/0623    
 
2002/0109/sys/src/9/port/devenv.c:228,2342002/0405/sys/src/9/port/devenv.c:227,233
1990/0227    
		n = 0; 
	else 
1992/0623    
		memmove(a, e->value+offset, n); 
	qunlock(eg); 
2002/0405    
	runlock(eg); 
1990/0227    
	return n; 
} 
 
2002/0109/sys/src/9/port/devenv.c:249,2582002/0405/sys/src/9/port/devenv.c:248,257
1991/1018    
		error(Etoobig); 
1992/0623    
 
2002/0109    
	eg = envgrp(c); 
1992/0623    
	qlock(eg); 
2002/0405    
	wlock(eg); 
1999/0122    
	e = envlookup(eg, nil, c->qid.path); 
1992/0623    
	if(e == 0) { 
		qunlock(eg); 
2002/0405    
		wunlock(eg); 
1991/1018    
		error(Enonexist); 
1990/0227    
	} 
 
2002/0109/sys/src/9/port/devenv.c:268,2742002/0405/sys/src/9/port/devenv.c:267,273
1992/0623    
	memmove(e->value+offset, a, n); 
1999/0122    
	e->qid.vers++; 
	eg->vers++; 
1992/0623    
	qunlock(eg); 
2002/0405    
	wunlock(eg); 
1992/0623    
	return n; 
1995/0108    
} 
 
2002/0109/sys/src/9/port/devenv.c:299,3052002/0405/sys/src/9/port/devenv.c:298,304
1992/0625    
	Evalue **l, *ne, *e; 
 
	l = &to->entries; 
	qlock(from); 
2002/0405    
	rlock(from); 
1992/0625    
	for(e = from->entries; e; e = e->link) { 
		ne = smalloc(sizeof(Evalue)); 
		ne->name = smalloc(strlen(e->name)+1); 
2002/0109/sys/src/9/port/devenv.c:313,3192002/0405/sys/src/9/port/devenv.c:312,318
1992/0625    
		*l = ne; 
		l = &ne->link; 
	} 
	qunlock(from); 
2002/0405    
	runlock(from); 
1992/0625    
} 
 
void 
2002/0109/sys/src/9/port/devenv.c:375,3832002/0405/sys/src/9/port/devenv.c:374,382
2002/0109    
	char *p, *q; 
	int n; 
 
	qlock(eg); 
2002/0405    
	rlock(eg); 
2002/0109    
	if(waserror()) { 
		qunlock(eg); 
2002/0405    
		runlock(eg); 
2002/0109    
		nexterror(); 
	} 
	 
2002/0109/sys/src/9/port/devenv.c:400,4052002/0405/sys/src/9/port/devenv.c:399,404
2002/0109    
	*q = 0; 
	 
	poperror(); 
	qunlock(eg); 
2002/0405    
	runlock(eg); 
2002/0109    
	return p; 
1991/1102    
} 


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