~kris/9p

9hist

c23700a257bb12dd28650c071305eab6d31cc31c — David du Colombier 28 years ago 1f74cf2
Plan 9 from Bell Labs 1998-08-08
3 files changed, 8 insertions(+), 46 deletions(-)

M ip/ethermedium.c
M ip/tcp.c
M port/devcons.c
M ip/ethermedium.c => ip/ethermedium.c +0 -1
@@ 286,7 286,6 @@ etherread(void *a)
		else
			ipiput(er->f, ifc->lifc->local, bp);
		runlock(ifc);	locked = 0;	USED(locked);

	}
}


M ip/tcp.c => ip/tcp.c +4 -1
@@ 1794,6 1794,7 @@ void
addreseq(Tcpctl *tcb, Tcp *seg, Block *bp, ushort length)
{
	Reseq *rp, *rp1;
	int i;

	rp = malloc(sizeof(Reseq));
	if(rp == nil){


@@ 1813,7 1814,9 @@ addreseq(Tcpctl *tcb, Tcp *seg, Block *bp, ushort length)
		return;
	}

	for(;;) {
	for(i = 0;; i++) {
		if(i > 100)
			print("very long tcp resequence queue\n");
		if(rp1->next == nil || seq_lt(seg->seq, rp1->next->seg.seq)) {
			rp->next = rp1->next;
			rp1->next = rp;

M port/devcons.c => port/devcons.c +4 -44
@@ 32,10 32,6 @@ char	sysname[NAMELEN];
static ulong	randomread(void*, ulong);
static void	randominit(void);
static void	seedrand(void);
static long	qtimer(long, vlong);

int qtimerentry = -1;
vlong µoffset;

void
printinit(void)


@@ 212,6 208,7 @@ echo(Rune r, char *buf, int n)
{
	static int ctrlt, pid;
	extern ulong etext;
	int x;

	/*
	 * ^p hack


@@ 243,7 240,9 @@ echo(Rune r, char *buf, int n)
				consdebug();
			return;
		case 'p':
			x = spllo();
			procdump();
			splx(x);
			return;
		case 'q':
			scheddump();


@@ 361,7 360,6 @@ enum{
	Qsysname,
	Qsysstat,
	Qtime,
	Qtimer,
	Quser,
};



@@ 390,8 388,7 @@ static Dirtab consdir[]={
	"sysname",	{Qsysname},	0,		0664,
	"sysstat",	{Qsysstat},	0,		0666,
	"time",		{Qtime},	NUMSIZE,	0664,
	"timer",	{Qtimer},	0,		0444,
 	"user",		{Quser},	NAMELEN,	0666,
	"user",		{Quser},	NAMELEN,	0666,
};

ulong	boottime;		/* seconds since epoch at boot */


@@ 450,13 447,6 @@ static void
consinit(void)
{
	randominit();

	if (qtimerentry < 0) {
		while (consdir[++qtimerentry].qid.path != Qtimer)
			;
		µoffset = (vlong)1000000*rtctime() -
			  (vlong)1000*TK2MS(MACHP(0)->ticks);
	}
}

static Chan*


@@ 474,9 464,6 @@ conswalk(Chan *c, char *name)
static void
consstat(Chan *c, char *dp)
{
	if (c->qid.path == Qtimer)
		consdir[qtimerentry].length = µoffset +
			(vlong)1000*TK2MS(MACHP(0)->ticks);
	devstat(c, dp, consdir, nelem(consdir), devgen);
}



@@ 532,8 519,6 @@ consread(Chan *c, void *buf, long n, vlong off)
		return n;
	switch(c->qid.path & ~CHDIR){
	case Qdir:
		consdir[qtimerentry].length = µoffset +
			(vlong)1000*TK2MS(MACHP(0)->ticks);
		return devdirread(c, buf, n, consdir, nelem(consdir), devgen);

	case Qcons:


@@ 621,9 606,6 @@ consread(Chan *c, void *buf, long n, vlong off)
	case Qtime:
		return readnum((ulong)offset, buf, n, rtctime(), 12);

	case Qtimer:
		return qtimer(n, offset);

	case Qclock:
		k = offset;
		if(k >= 2*NUMSIZE)


@@ 881,10 863,6 @@ conswrite(Chan *c, void *va, long n, vlong off)
			sysname[n-1] = 0;
		break;

	case Qtimer:
		error(Eperm);
		break;

	default:
		print("conswrite: %d\n", c->qid.path);
		error(Egreg);


@@ 1075,21 1053,3 @@ randomread(void *xp, ulong n)

	return n;
}

static long
qtimer(long n, vlong offset)
{
	/* block until time ≥ offset;
	 * add n to offset
	 * return increment to offset (i.e., n)
	 */
	vlong time, rathole;

	for (;;) {
		rathole = µoffset/1000;
		time = offset/1000 - (rathole + TK2MS(MACHP(0)->ticks));
		if (time <= 0) break;
		tsleep(&up->sleep, return0, 0, (long)time);
	}
	return n;
}