~kris/9p

9hist

f6996f990518824f910ee31a730a47632ba721af — David du Colombier 30 years ago b5eb8f3
Plan 9 from Bell Labs 1996-01-22
1 files changed, 40 insertions(+), 4 deletions(-)

M port/devtinyfs.c
M port/devtinyfs.c => port/devtinyfs.c +40 -4
@@ 17,12 17,23 @@ enum{
	Qmedium,
};

typedef struct FS FS;

struct {
struct FS {
	QLock;
	Ref	r;
	int	dev;
	FS	*next;
	Chan	*c;
	Dirtab	file[Nfile+1];
	Dirtab	*file;
	int	nfile;
	int	maxfile;
};

struct {
	QLock;
	FS	*l;
	int	hidev;
} tinyfs;

void


@@ 46,9 57,34 @@ tinyfsinit(void)
Chan *
tinyfsattach(char *spec)
{
	c = namec((char*)arg[0], Aopen, arg[1], 0);
	FS *fs, **l;
	Chan *c, *cc;

	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 devattach('E', spec);
	return c;
}

Chan *