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

1996/0122/port/devtinyfs.c (diff list | history)

1996/0120/sys/src/9/port/devtinyfs.c:17,281996/0122/sys/src/9/port/devtinyfs.c:17,39 (short | long | prev | next)
1996/0120    
	Qmedium, 
1996/0116    
}; 
 
1996/0122    
typedef struct FS FS; 
1996/0116    
 
struct { 
1996/0122    
struct FS { 
1996/0116    
	QLock; 
1996/0122    
	Ref	r; 
	int	dev; 
	FS	*next; 
1996/0116    
	Chan	*c; 
1996/0120    
	Dirtab	file[Nfile+1]; 
1996/0122    
	Dirtab	*file; 
1996/0116    
	int	nfile; 
1996/0122    
	int	maxfile; 
}; 
 
struct { 
	QLock; 
	FS	*l; 
	int	hidev; 
1996/0116    
} tinyfs; 
 
void 
1996/0120/sys/src/9/port/devtinyfs.c:46,541996/0122/sys/src/9/port/devtinyfs.c:57,90
1996/0116    
Chan * 
tinyfsattach(char *spec) 
{ 
1996/0120    
	c = namec((char*)arg[0], Aopen, arg[1], 0); 
1996/0122    
	FS *fs, **l; 
	Chan *c, *cc; 
1996/0120    
 
1996/0116    
	return devattach('E', spec); 
1996/0122    
	cc = namec((char*)arg[0], Aopen, arg[1], 0); 
	qlock(&tinyfs); 
	l = &tinyfs.l; 
	for(fs = tinyfs.l; fs != 0; fs = fs->next){ 
		if(eqchan(c, fs->c)) 
			break; 
		l = &(fs->next); 
	} 
	if(fs){ 
		incref(&fs->r); 
		qunlock(&tinyfs); 
		close(cc); 
	} else { 
		fs = smalloc(sizeof(*fs)); 
		*l = fs; 
		fs->c = cc; 
		incref(&fs->r); 
		qunlock(&tinyfs); 
	} 
 
	c = devattach('E', spec); 
	c->aux = fs; 
	c->dev = fs->dev; 
 
	return c; 
1996/0116    
} 
 
Chan * 


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