~kris/9p

9hist

928a3b2052ad184b886093d73f140683d4c62a61 — David du Colombier 26 years ago e0d8eaa
Plan 9 from Bell Labs 2000-01-07
5 files changed, 21 insertions(+), 7 deletions(-)

M ip/ipifc.c
M pc/kbd.c
M port/devproc.c
M port/portdat.h
M port/qlock.c
M ip/ipifc.c => ip/ipifc.c +9 -3
@@ 189,7 189,10 @@ ipifcunbind(Ipifc *ifc)
	av[2] = mask;
	av[3] = 0;
	while(ifc->lifc){
		sprint(ip, "%I", ifc->lifc->local);
		if(ipcmp(ifc->lifc->mask, IPallbits) == 0)
			sprint(ip, "%I", ifc->lifc->remote);
		else
			sprint(ip, "%I", ifc->lifc->local);
		sprint(mask, "%M", ifc->lifc->mask);
		ipifcrem(ifc, av, 3, 0);
	}


@@ 595,8 598,11 @@ ipifcconnect(Conv* c, char **argv, int argc)
	}
	wlock(ifc);
	while(ifc->lifc){
		sprint(ip, "%I", ifc->lifc->local);
		sprint(mask, "%I", ifc->lifc->mask);
		if(ipcmp(ifc->lifc->mask, IPallbits) == 0)
			sprint(ip, "%I", ifc->lifc->remote);
		else
			sprint(ip, "%I", ifc->lifc->local);
		sprint(mask, "%M", ifc->lifc->mask);
		ipifcrem(ifc, av, 3, 0);
	}
	wunlock(ifc);

M pc/kbd.c => pc/kbd.c +7 -3
@@ 49,6 49,10 @@ enum {
	Scroll=		KF|21,
};

/*
 * The codes at 0x79 and 0x81 are produed by the PFU Happy Hacking keyboard.
 * A 'standard' keyboard doesn't produce anything above 0x58.
 */
Rune kbtab[] = 
{
[0x00]	No,	0x1b,	'1',	'2',	'3',	'4',	'5',	'6',


@@ 66,7 70,7 @@ Rune kbtab[] =
[0x60]	No,	No,	No,	No,	No,	No,	No,	No,
[0x68]	No,	No,	No,	No,	No,	No,	No,	No,
[0x70]	No,	No,	No,	No,	No,	No,	No,	No,
[0x78]	No,	No,	No,	No,	No,	No,	No,	No,
[0x78]	No,	View,	No,	Up,	No,	No,	No,	No,
};

Rune kbtabshift[] =


@@ 86,7 90,7 @@ Rune kbtabshift[] =
[0x60]	No,	No,	No,	No,	No,	No,	No,	No,
[0x68]	No,	No,	No,	No,	No,	No,	No,	No,
[0x70]	No,	No,	No,	No,	No,	No,	No,	No,
[0x78]	No,	No,	No,	No,	No,	No,	No,	No,
[0x78]	No,	Up,	No,	Up,	No,	No,	No,	No,
};

Rune kbtabesc1[] =


@@ 106,7 110,7 @@ Rune kbtabesc1[] =
[0x60]	No,	No,	No,	No,	No,	No,	No,	No,
[0x68]	No,	No,	No,	No,	No,	No,	No,	No,
[0x70]	No,	No,	No,	No,	No,	No,	No,	No,
[0x78]	No,	No,	No,	No,	No,	No,	No,	No,
[0x78]	No,	Up,	No,	No,	No,	No,	No,	No,
};

enum

M port/devproc.c => port/devproc.c +1 -1
@@ 33,7 33,7 @@ Dirtab procdir[] =
	"ctl",		{Qctl},		0,			0000,
	"fd",		{Qfd},		0,			0000,
	"fpregs",	{Qfpregs},	sizeof(FPsave),		0000,
	"kregs",	{Qkregs},	sizeof(Ureg),		0400,
	"kregs",	{Qkregs},	sizeof(Ureg),		0440,
	"mem",		{Qmem},		0,			0000,
	"note",		{Qnote},	0,			0000,
	"noteid",	{Qnoteid},	0,			0666,

M port/portdat.h => port/portdat.h +2 -0
@@ 70,6 70,8 @@ struct RWlock
	Lock	use;
	Proc	*head;		/* list of waiting processes */
	Proc	*tail;
	ulong	wpc;		/* pc of writer */
	Proc	*wproc;		/* writing proc */
	int	readers;	/* number of readers */
	int	writer;		/* number of writers */
};

M port/qlock.c => port/qlock.c +2 -0
@@ 137,6 137,8 @@ wlock(RWlock *q)
rwstats.wlock++;
	if(q->readers == 0 && q->writer == 0){
		/* noone waiting, go for it */
		q->wpc = getcallerpc(&q);
		q->wproc = up;
		q->writer = 1;
		unlock(&q->use);
		return;