~kris/9p

9hist

f5ad1d6a6710ce07d869d61ec72bb3827ce6ee64 — David du Colombier 29 years ago 26f41b1
Plan 9 from Bell Labs 1997-04-08
M carrera/devether.c => carrera/devether.c +3 -0
@@ 836,6 836,9 @@ parseether(uchar *to, char *from)
}

Dev etherdevtab = {
	'l',
	"ether",

	etherreset,
	devinit,
	etherattach,

M carrera/devrtc.c => carrera/devrtc.c +3 -0
@@ 293,6 293,9 @@ rtcwrite(Chan *c, void *buf, long n, ulong offset)
}

Dev rtcdevtab = {
	'r',
	"rtc",

	rtcreset,
	devinit,
	rtcattach,

M ip/devip.c => ip/devip.c +3 -0
@@ 712,6 712,9 @@ ipbwrite(Chan* c, Block* bp, ulong offset)
}

Dev ipdevtab = {
	'I',
	"ip",

	ipreset,
	ipinit,
	ipattach,

M ip/kio.c => ip/kio.c +2 -2
@@ 71,7 71,7 @@ kread(int fd, void *va, long n)

	if(dir && c->mnt)
		n = unionread(c, va, n);
	else if(devchar[c->type] != L'M')
	else if(devtab[c->type]->dc != L'M')
		n = devtab[c->type]->read(c, va, n, c->offset);
	else
		n = mntread9p(c, va, n, c->offset);


@@ 106,7 106,7 @@ kseek(int fd, int offset, int whence)
	if(c->qid.path & CHDIR)
		error(Eisdir);

	if(devchar[c->type] == '|')
	if(devtab[c->type]->dc == '|')
		error(Eisstream);

	off = 0;

M pc/archgeneric.c => pc/archgeneric.c +0 -2
@@ 57,8 57,6 @@ static X86type x86type[] =
	{ 5,	2,	23,	"P54C", },
	{ 5,	3,	23,	"P24T", },
	{ 5,	4,	23,	"P55C MMX", },
	{ 5,	5,	23,	"PODDX4", },
	{ 5,	6,	23,	"PODP5", },
	{ 5,	7,	23,	"P54C VRT", },
	{ 6,	1,	16,	"PentiumPro", },/* determined by trial and error */


M pc/devastar.c => pc/devastar.c +4 -1
@@ 378,7 378,7 @@ astargen(Chan *c, Dirtab *tab, int ntab, int i, Dir *db)
	db->mtime = kerndate;
	memmove(db->uid, eve, NAMELEN);
	memmove(db->gid, eve, NAMELEN);
	db->type = devchar[c->type];
	db->type = devtab[c->type]->dc;
	db->dev = c->dev;
	if(c->flag&CMSG)
		db->mode |= CHMOUNT;


@@ 1236,6 1236,9 @@ astarwstat(Chan *c, char *dp)
}

Dev astardevtab = {
	'G',
	"astar",

	astarreset,
	devinit,
	astarattach,

M pc/devata.c => pc/devata.c +3 -0
@@ 1912,6 1912,9 @@ atapiintr(Controller *cp)
}

Dev atadevtab = {
	'H',
	"ata",

	devreset,
	devinit,
	ataattach,

M pc/devether.c => pc/devether.c +3 -0
@@ 386,6 386,9 @@ etherreset(void)
}

Dev etherdevtab = {
	'l',
	"ether",

	etherreset,
	devinit,
	etherattach,

M pc/devfloppy.c => pc/devfloppy.c +3 -0
@@ 1003,6 1003,9 @@ floppyintr(Ureg *ur)
}

Dev floppydevtab = {
	'f',
	"floppy",

	floppyreset,
	devinit,
	floppyattach,

M pc/devi82365.c => pc/devi82365.c +3 -0
@@ 877,6 877,9 @@ i82365write(Chan *c, void *a, long n, ulong offset)
}

Dev i82365devtab = {
	'y',
	"i82365",

	i82365reset,
	devinit,
	i82365attach,

M pc/devlpt.c => pc/devlpt.c +3 -0
@@ 193,6 193,9 @@ lptintr(Ureg *ur, void *arg)
}

Dev lptdevtab = {
	'L',
	"lpt",

	devreset,
	devinit,
	lptattach,

M pc/devrtc.c => pc/devrtc.c +3 -0
@@ 277,6 277,9 @@ rtcwrite(Chan* c, void* buf, long n, ulong offset)
}

Dev rtcdevtab = {
	'r',
	"rtc",

	devreset,
	devinit,
	rtcattach,

M pc/devvga.c => pc/devvga.c +3 -0
@@ 410,6 410,9 @@ vgawrite(Chan *c, void *buf, long n, ulong offset)
}

Dev vgadevtab = {
	'v',
	"vga",

	vgareset,
	vgainit,
	vgaattach,

M port/chan.c => port/chan.c +2 -2
@@ 55,7 55,7 @@ chandevreset(void)
{
	int i;

	for(i=0; devchar[i]; i++)
	for(i=0; devtab[i] != nil; i++)
		devtab[i]->reset();
}



@@ 64,7 64,7 @@ chandevinit(void)
{
	int i;

	for(i=0; devchar[i]; i++)
	for(i=0; devtab[i] != nil; i++)
		devtab[i]->init();
}


M port/dev.c => port/dev.c +8 -14
@@ 10,22 10,16 @@ extern ulong	kerndate;
int
devno(int c, int user)
{
	Rune *s;
	int i;

	s = devchar;
	i = 0;
	while(*s){
		if(c == *s)
	for(i = 0; devtab[i] != nil; i++) {
		if(devtab[i]->dc == c)
			return i;
		i++;
		s++;
	}
	if(user == 0)
		panic("devno %C 0x%ux", c, c);

	if(user)
		return -1;
	panic("devno %C 0x%ux", c, c);
	return 0;
	return -1;
}

void


@@ 33,7 27,7 @@ devdir(Chan *c, Qid qid, char *n, long length, char *user, long perm, Dir *db)
{
	strcpy(db->name, n);
	db->qid = qid;
	db->type = devchar[c->type];
	db->type = devtab[c->type]->dc;
	db->dev = c->dev;
	if(qid.path & CHDIR)
		db->mode = CHDIR|perm;


@@ 89,7 83,7 @@ Chan*
devclone(Chan *c, Chan *nc)
{
	if(c->flag & COPEN)
		panic("clone of open file type %C\n", devchar[c->type]);
		panic("clone of open file type %C\n", devtab[c->type]->dc);

	if(nc == 0)
		nc = newchan();


@@ 158,7 152,7 @@ devstat(Chan *c, char *db, Dirtab *tab, int ntab, Devgen *gen)
			}
			print("%s %s: devstat %C %lux\n",
				up->text, up->user,
				devchar[c->type], c->qid.path);
				devtab[c->type]->dc, c->qid.path);

			error(Enonexist);
		case 0:

M port/devXXX.c => port/devXXX.c +3 -0
@@ 129,6 129,9 @@ XXXbwrite(Chan* c, Block* bp, ulong offset)		/* default in dev.c */
}

Dev XXXdevtab = {					/* defaults in dev.c */
	'X',
	"XXX",

	XXXreset,					/* devreset */
	XXXinit,					/* devinit */
	XXXattach,

M port/devaudio.c => port/devaudio.c +3 -0
@@ 921,6 921,9 @@ swab(uchar *a)
}

Dev audiodevtab = {
	'A',
	"audio",

	devreset,
	audioinit,
	audioattach,

M port/devcons.c => port/devcons.c +3 -0
@@ 828,6 828,9 @@ setterm(char *f)
}

Dev consdevtab = {
	'c',
	"cons",

	devreset,
	consinit,
	consattach,

M port/devdup.c => port/devdup.c +3 -0
@@ 85,6 85,9 @@ dupwrite(Chan*, void*, long, ulong)
}

Dev dupdevtab = {
	'd',
	"dup",

	devreset,
	devinit,
	dupattach,

M port/devenv.c => port/devenv.c +3 -0
@@ 231,6 231,9 @@ envwrite(Chan *c, void *a, long n, ulong offset)
}

Dev envdevtab = {
	'e',
	"env",

	devreset,
	devinit,
	envattach,

M port/devkprof.c => port/devkprof.c +3 -0
@@ 169,6 169,9 @@ kprofwrite(Chan *c, char *a, long n, ulong)
}

Dev kprofdevtab = {
	'T',
	"kprof",

	devreset,
	kprofinit,
	kprofattach,

M port/devlance.c => port/devlance.c +3 -0
@@ 546,6 546,9 @@ parseether(uchar *to, char *from)
}

Dev lancedevtab = {
	'l',
	"lance",

	lancereset,
	lanceinit,
	lanceattach,

M port/devmnt.c => port/devmnt.c +10 -4
@@ 668,7 668,7 @@ mountio(Mnt *m, Mntrpc *r)
			nexterror();
	}
	else {
		if(devchar[m->c->type] == L'M'){
		if(devtab[m->c->type]->dc == L'M'){
			if(mnt9prdwr(Twrite, m->c, r->rpc, n, 0) != n)
				error(Emountrpc);
		}else{


@@ 718,7 718,7 @@ mntrpcread(Mnt *m, Mntrpc *r)
		}
		r->reply.type = 0;
		r->reply.tag = 0;
		if(devchar[m->c->type] == L'M')
		if(devtab[m->c->type]->dc == L'M')
			n = mnt9prdwr(Tread, m->c, r->rpc, MAXRPC, 0);
		else
			n = devtab[m->c->type]->read(m->c, r->rpc, MAXRPC, 0);


@@ 940,8 940,11 @@ mntchk(Chan *c)
void
mntdirfix(uchar *dirbuf, Chan *c)
{
	dirbuf[DIRLEN-4] = devchar[c->type]>>0;
	dirbuf[DIRLEN-3] = devchar[c->type]>>8;
	int r;

	r = devtab[c->type]->dc;
	dirbuf[DIRLEN-4] = r>>0;
	dirbuf[DIRLEN-3] = r>>8;
	dirbuf[DIRLEN-2] = c->dev;
	dirbuf[DIRLEN-1] = c->dev>>8;
}


@@ 1055,6 1058,9 @@ mntrepl(char *buf)
}

Dev mntdevtab = {
	'm',
	"mnt",

	mntreset,
	devinit,
	mntattach,

M port/devmouse.c => port/devmouse.c +3 -0
@@ 288,6 288,9 @@ mousewrite(Chan *c, void *va, long n, ulong)
}

Dev mousedevtab = {
	'm',
	"mouse",

	mousereset,
	mouseinit,
	mouseattach,

M port/devns16552.c => port/devns16552.c +3 -0
@@ 942,6 942,9 @@ ns16552wstat(Chan *c, char *dp)
}

Dev ns16552devtab = {
	't',
	"ns16552",

	ns16552reset,
	devinit,
	ns16552attach,

M port/devpipe.c => port/devpipe.c +3 -0
@@ 349,6 349,9 @@ pipebwrite(Chan *c, Block *bp, ulong)
}

Dev pipedevtab = {
	'|',
	"pipe",

	devreset,
	pipeinit,
	pipeattach,

M port/devproc.c => port/devproc.c +3 -0
@@ 619,6 619,9 @@ procwrite(Chan *c, void *va, long n, ulong offset)
}

Dev procdevtab = {
	'p',
	"proc",

	devreset,
	procinit,
	procattach,

M port/devroot.c => port/devroot.c +3 -0
@@ 213,6 213,9 @@ rootwrite(Chan *c, void *buf, long n, ulong)
}

Dev rootdevtab = {
	'/',
	"root",

	rootreset,
	devinit,
	rootattach,

M port/devsd.c => port/devsd.c +3 -0
@@ 252,6 252,9 @@ sdwrite(Chan *c, char *a, long n, ulong offset)
}

Dev sddevtab = {
	'w',
	"sd",

	devreset,
	sdinit,
	sdattach,

M port/devsrv.c => port/devsrv.c +3 -0
@@ 249,6 249,9 @@ srvwrite(Chan *c, void *va, long n, ulong)
}

Dev srvdevtab = {
	's',
	"srv",

	devreset,
	srvinit,
	srvattach,

M port/devssl.c => port/devssl.c +3 -0
@@ 879,6 879,9 @@ out:
}

Dev ssldevtab = {
	'D',
	"ssl",

	devreset,
	sslinit,
	sslattach,

M port/devtinyfs.c => port/devtinyfs.c +3 -0
@@ 872,6 872,9 @@ tinyfswrite(Chan *c, void *a, long n, ulong offset)
}

Dev tinyfsdevtab = {
	'U',
	"tinyfs",

	tinyfsreset,
	devinit,
	tinyfsattach,

M port/portdat.h => port/portdat.h +3 -1
@@ 166,6 166,9 @@ struct Chan

struct Dev
{
	int	dc;
	char*	name;

	void	(*reset)(void);
	void	(*init)(void);
	Chan*	(*attach)(char*);


@@ 620,7 623,6 @@ enum
extern	Conf	conf;
extern	char*	conffile;
extern	int	cpuserver;
extern	Rune*	devchar;
extern	Dev*	devtab[];
extern  char	eve[];
extern	char	hostdomain[];

M port/sysfile.c => port/sysfile.c +3 -3
@@ 317,7 317,7 @@ sysread9p(ulong *arg)

	if(dir && c->mnt)
		n = unionread(c, (void*)arg[1], n);
	else if(devchar[c->type] != L'M')
	else if(devtab[c->type]->dc != L'M')
		n = devtab[c->type]->read(c, (void*)arg[1], n, c->offset);
	else
		n = mntread9p(c, (void*)arg[1], n, c->offset);


@@ 386,7 386,7 @@ syswrite9p(ulong *arg)
	if(c->qid.path & CHDIR)
		error(Eisdir);

	if(devchar[c->type] != L'M')
	if(devtab[c->type]->dc != L'M')
		n = devtab[c->type]->write(c, (void*)arg[1], arg[2], c->offset);
	else
		n = mntwrite9p(c, (void*)arg[1], arg[2], c->offset);


@@ 440,7 440,7 @@ sysseek(ulong *arg)
	if(c->qid.path & CHDIR)
		error(Eisdir);

	if(devchar[c->type] == '|')
	if(devtab[c->type]->dc == '|')
		error(Eisstream);

	off = 0;

M port/sysproc.c => port/sysproc.c +1 -1
@@ 397,7 397,7 @@ sysexec(ulong *arg)
	/*
	 *  '/' processes are higher priority (hack to make /ip more responsive).
	 */
	if(devchar[tc->type] == L'/')
	if(devtab[tc->type]->dc == L'/')
		up->basepri = PriRoot;
	up->priority = up->basepri;
	poperror();