~kris/9p

9hist

f515d58506eb047ce367748e16f824951c5d3758 — David du Colombier 35 years ago 13d50d6
Plan 9 from Bell Labs 1991-04-19
M gnot/dat.h => gnot/dat.h +1 -0
@@ 176,6 176,7 @@ struct Dev
	long	 (*write)(Chan*, void*, long, ulong);
	void	 (*remove)(Chan*);
	void	 (*wstat)(Chan*, char*);
	Chan	*(*clwalk)(Chan*, char*);
};

struct Dirtab

M gnot/devcons.c => gnot/devcons.c +6 -0
@@ 491,6 491,12 @@ conswalk(Chan *c, char *name)
	return devwalk(c, name, consdir, NCONS, consgen);
}

Chan*
consclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
consstat(Chan *c, char *dp)
{

M gnot/devincon.c => gnot/devincon.c +6 -0
@@ 359,6 359,12 @@ inconwalk(Chan *c, char *name)
	return devwalk(c, name, 0, 0, streamgen);
}

Chan*
inconclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
inconstat(Chan *c, char *dp)
{

M gnot/devport.c => gnot/devport.c +6 -0
@@ 83,6 83,12 @@ portwalk(Chan *c, char *name)
	return devwalk(c, name, portdir, NPORT, devgen);
}

Chan*
portclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
portstat(Chan *c, char *db)
{

M gnot/fns.h => gnot/fns.h +1 -0
@@ 28,6 28,7 @@ void	delete(List**, List*, List*);
void	delete0(List**, List*);
Chan	*devattach(int, char*);
Chan	*devclone(Chan*, Chan*);
Chan	*devclwalk(Chan*, char*);
void	devdir(Chan*, Qid, char*, long, long, Dir*);
long	devdirread(Chan*, char*, long, Dirtab*, int, Devgen*);
Devgen	devgen;

M port/devbit.c => port/devbit.c +6 -0
@@ 191,6 191,12 @@ bitwalk(Chan *c, char *name)
	return devwalk(c, name, bitdir, NBIT, devgen);
}

Chan*
bitclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
bitstat(Chan *c, char *db)
{

M port/devboot.c => port/devboot.c +6 -0
@@ 47,6 47,12 @@ bootwalk(Chan *c, char *name)
	return devwalk(c, name, bootdir, NBOOT, devgen);
}

Chan*
bootclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
bootstat(Chan *c, char *dp)
{

M port/devcons.c => port/devcons.c +6 -0
@@ 404,6 404,12 @@ conswalk(Chan *c, char *name)
	return devwalk(c, name, consdir, NCONS, devgen);
}

Chan*
consclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
consstat(Chan *c, char *dp)
{

M port/devdk.c => port/devdk.c +6 -0
@@ 753,6 753,12 @@ dkwalk(Chan *c, char *name)
		return devwalk(c, name, dksubdir, Nsubdir, streamgen);
}

Chan*
dkclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
dkstat(Chan *c, char *dp)
{

M port/devdup.c => port/devdup.c +6 -0
@@ 46,6 46,12 @@ dupclone(Chan *c, Chan *nc)
	return devclone(c, nc);
}

Chan*
dupclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

int
dupwalk(Chan *c, char *name)
{

M port/devenv.c => port/devenv.c +6 -0
@@ 270,6 270,12 @@ envwalk(Chan *c, char *name)
	return 0;
}

Chan*
envclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
envstat(Chan *c, char *db)
{

M port/deviproute.c => port/deviproute.c +7 -1
@@ 190,7 190,7 @@ enum{
	Qdata,
};
Dirtab iproutetab[]={
	"iproute",		Qdata,		0,	0600,
	"iproute",		{Qdata},		0,	0600,
};
#define Niproutetab (sizeof(iproutetab)/sizeof(Dirtab))



@@ 222,6 222,12 @@ iproutewalk(Chan *c, char *name)
	return devwalk(c, name, iproutetab, (long)Niproutetab, devgen);
}

Chan*
iprouteclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
iproutestat(Chan *c, char *db)
{

M port/devkprof.c => port/devkprof.c +6 -0
@@ 63,6 63,12 @@ kprofwalk(Chan *c, char *name)
	return devwalk(c, name, kproftab, (long)Nkproftab, devgen);
}

Chan*
kprofclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
kprofstat(Chan *c, char *db)
{

M port/devlance.c => port/devlance.c +6 -0
@@ 579,6 579,12 @@ lancewalk(Chan *c, char *name)
		return devwalk(c, name, 0, 0, streamgen);
}

Chan*
lanceclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
lancestat(Chan *c, char *dp)
{

M port/devnonet.c => port/devnonet.c +6 -0
@@ 202,6 202,12 @@ nonetwalk(Chan *c, char *name)
		return devwalk(c, name, nosubdir, Nsubdir, streamgen);
}

Chan*
nonetclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
nonetstat(Chan *c, char *dp)
{

M port/devpipe.c => port/devpipe.c +6 -0
@@ 125,6 125,12 @@ pipewalk(Chan *c, char *name)
	return devwalk(c, name, pipedir, NPIPEDIR, pipegen);
}

Chan*
pipeclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
pipestat(Chan *c, char *db)
{

M port/devproc.c => port/devproc.c +6 -0
@@ 101,6 101,12 @@ procwalk(Chan *c, char *name)
	return devwalk(c, name, 0, 0, procgen);
}

Chan*
procclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
procstat(Chan *c, char *db)
{

M port/devroot.c => port/devroot.c +6 -0
@@ 61,6 61,12 @@ rootwalk(Chan *c, char *name)
	return devwalk(c, name, rootdir, nroot, devgen);
}

Chan*
rootclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
rootstat(Chan *c, char *dp)
{

M port/devscsi.c => port/devscsi.c +6 -0
@@ 94,6 94,12 @@ scsiwalk(Chan *c, char *name)
	return devwalk(c, name, 0, 0, scsigen);
}

Chan*
scsiclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
scsistat(Chan *c, char *db)
{

M port/devsrv.c => port/devsrv.c +6 -0
@@ 105,6 105,12 @@ srvwalk(Chan *c, char *name)
	return 1;
}

Chan*
srvclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
srvstat(Chan *c, char *db)
{

M port/devwren.c => port/devwren.c +6 -0
@@ 175,6 175,12 @@ wrenwalk(Chan *c, char *name)
	return devwalk(c, name, wrendir, NWREN, wrengen);
}

Chan*
wrenclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void
wrenstat(Chan *c, char *db)
{

M port/stream.c => port/stream.c +3 -0
@@ 223,6 223,7 @@ allocb(ulong size)
	/*
	 *  return an empty block
	 */
	bp->flags = bcp - bclass;
	bp->rptr = bp->wptr = bp->base;
	bp->next = 0;
	bp->type = M_DATA;


@@ 248,6 249,7 @@ freeb(Block *bp)
		panic("freeb class");
	for(; bp; bp = nbp){
		bcp = &bclass[bp->flags & S_CLASS];
		bp->flags = S_CLASS;			/* Check for doulbe free */
		lock(bcp);
		bp->rptr = bp->wptr = 0;
		if(bcp->first)


@@ 596,6 598,7 @@ pullup(Block *bp, int n)
	/*
	 *  if not enough room in the first block,
	 *  add another to the front of the list.
	 */
	if(bp->lim - bp->rptr < n){
		nbp = allocb(n);
		nbp->next = bp;

M port/sysfile.c => port/sysfile.c +0 -6
@@ 227,10 227,8 @@ sysread(ulong *arg)
	c = fdtochan(arg[0], OREAD);
	validaddr(arg[1], arg[2], 1);
	qlock(&c->rdl);
	qlock(&c->wrl);		/* BUG BUG BUG */
	if(waserror()){
		qunlock(&c->rdl);
		qunlock(&c->wrl);		/* BUG BUG BUG */
		nexterror();
	}
	n = arg[2];


@@ 245,7 243,6 @@ sysread(ulong *arg)
		n = (*devtab[c->type].read)(c, (void*)arg[1], n, c->offset);
	c->offset += n;
	qunlock(&c->rdl);
	qunlock(&c->wrl);		/* BUG BUG BUG */
	return n;
}



@@ 257,10 254,8 @@ syswrite(ulong *arg)

	c = fdtochan(arg[0], OWRITE);
	validaddr(arg[1], arg[2], 0);
	qlock(&c->rdl);		/* BUG BUG BUG */
	qlock(&c->wrl);
	if(waserror()){
		qunlock(&c->rdl);		/* BUG BUG BUG */
		qunlock(&c->wrl);
		nexterror();
	}


@@ 268,7 263,6 @@ syswrite(ulong *arg)
		error(Eisdir);
	n = (*devtab[c->type].write)(c, (void*)arg[1], arg[2], c->offset);
	c->offset += n;
	qunlock(&c->rdl);		/* BUG BUG BUG */
	qunlock(&c->wrl);
	return n;
}

M power/dat.h => power/dat.h +1 -0
@@ 186,6 186,7 @@ struct Dev
	long	 (*write)(Chan*, void*, long, ulong);
	void	 (*remove)(Chan*);
	void	 (*wstat)(Chan*, char*);
	Chan	*(*clwalk)(Chan*, char*);
};

struct Dirtab

M power/devhotrod.c => power/devhotrod.c +6 -0
@@ 152,6 152,12 @@ hotrodwalk(Chan *c, char *name)
	return devwalk(c, name, hotroddir, NHOTRODDIR, devgen);
}

Chan*
hotrodclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
hotrodstat(Chan *c, char *dp)
{

M power/devhs.c => power/devhs.c +6 -0
@@ 184,6 184,12 @@ hsvmewalk(Chan *c, char *name)
	return devwalk(c, name, 0, 0, streamgen);
}

Chan*
hsvmeclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
hsvmestat(Chan *c, char *dp)
{

M power/devrtc.c => power/devrtc.c +6 -0
@@ 104,6 104,12 @@ rtcwalk(Chan *c, char *name)
	return 0;
}

Chan*
rtcclwalk(Chan *c, char *name)
{
	return devclwalk(c, name);
}

void	 
rtcstat(Chan *c, char *dp)
{

M power/fns.h => power/fns.h +1 -0
@@ 36,6 36,7 @@ void	delete(List**, List*, List*);
void	delete0(List**, List*);
Chan	*devattach(int, char*);
Chan	*devclone(Chan*, Chan*);
Chan	*devclwalk(Chan*, char*);
void	devdir(Chan*, Qid, char*, long, long, Dir*);
long	devdirread(Chan*, char*, long, Dirtab*, int, Devgen*);
Devgen	devgen;

M ss/dat.h => ss/dat.h +1 -0
@@ 178,6 178,7 @@ struct Dev
	long	 (*write)(Chan*, void*, long, ulong );
	void	 (*remove)(Chan*);
	void	 (*wstat)(Chan*, char*);
	Chan	*(*clwalk)(Chan*, char*);
};

struct Dirtab

M ss/fns.h => ss/fns.h +1 -0
@@ 30,6 30,7 @@ void	delete(List**, List*, List*);
void	delete0(List**, List*);
Chan	*devattach(int, char*);
Chan	*devclone(Chan*, Chan*);
Chan	*devclwalk(Chan*, char*);
void	devdir(Chan*, Qid, char*, long, long, Dir*);
long	devdirread(Chan*, char*, long, Dirtab*, int, Devgen*);
Devgen	devgen;