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

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

1996/0203/sys/src/9/port/devtinyfs.c:55,601996/0206/sys/src/9/port/devtinyfs.c:55,61 (short | long | prev | next)
1996/0201    
 
typedef struct Tfile Tfile; 
struct Tfile { 
1996/0206    
	Lock; 
1996/0202    
	int	r; 
1996/0201    
	char	name[NAMELEN]; 
	ushort	bno; 
1996/0203/sys/src/9/port/devtinyfs.c:182,1871996/0206/sys/src/9/port/devtinyfs.c:183,199
1996/0201    
	return md; 
} 
 
1996/0206    
static Mdata* 
readdata(Tfs *fs, ulong bno, uchar *buf) 
{ 
	if(bno >= fs->nblocks) 
		return 0; 
	n = devtab[fs->c->type].read(fs->c, buf, Blen, Blen*bno); 
	if(n != Blen) 
		return 0; 
	return validdata(fs, buf); 
} 
 
1996/0202    
static int 
writedir(Tfs *fs, Tfile *f) 
{ 
1996/0203/sys/src/9/port/devtinyfs.c:603,6081996/0206/sys/src/9/port/devtinyfs.c:615,623
1996/0203    
	Tfs *fs; 
	Tfile *f; 
	int sofar, i; 
1996/0206    
	ulong bno, tbno; 
	Mdata *md; 
	uchar buf[Blen]; 
1996/0203    
 
	if(c->qid.path & CHDIR) 
1996/0201    
		return devdirread(c, a, n, tinyfstab, Ntinyfstab, tinyfsgen); 
1996/0203/sys/src/9/port/devtinyfs.c:613,6181996/0206/sys/src/9/port/devtinyfs.c:628,649
1996/0203    
		return 0; 
	if(n + offset >= f->length) 
		n = f->length - offset; 
1996/0206    
 
	/* walk to first data block */ 
	bno = f->dbno; 
	for(sofar = 0; sofar < offset; sofar += Blen){ 
		md = readdata(fs, bno, buf); 
		if(md == 0) 
			error(Eio); 
		bno = GETS(md->bno); 
	} 
 
	/* read first block */ 
	i = offset%Blen; 
 
	/* read data */ 
	for(sofar = 0; sofar+Blen < offset; sofar += Blen){ 
	 
1996/0203    
 
1996/0116    
	return n; 
} 


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