~kris/9p

9hist

e5c0b2459079152bbed1b92398f758064db1e7dd — David du Colombier 35 years ago 0103abf
Plan 9 from Bell Labs 1991-05-11
4 files changed, 46 insertions(+), 18 deletions(-)

M port/portfns.h
M port/queue.c
M port/stnoether.c
M port/stream.c
M port/portfns.h => port/portfns.h +1 -0
@@ 37,6 37,7 @@ int	devno(int, int);
Chan*	devopen(Chan*, int, Dirtab*, int, Devgen*);
void	devstat(Chan*, char*, Dirtab*, int, Devgen*);
int	devwalk(Chan*, char*, Dirtab*, int, Devgen*);
void*	dmaalloc(ulong);
void	dumpqueues(void);
void	dumpregs(Ureg*);
void	dumpstack(void);

M port/queue.c => port/queue.c +44 -14
@@ 45,40 45,70 @@ getc(IOQ *q)
}

void
puts(IOQ *q, char *s, int n)
puts(IOQ *q, void *buf, int n)
{
	int m;
	int m; uchar *nextin;
	uchar *s = buf;

	while(n){
		if(q->out > q->in)
			m = q->out - q->in - 1;
		else
		m = q->out - q->in - 1;
		if(m < 0)
			m = &q->buf[NQ] - q->in;
		if(m == 0)
			break;
		if(m > n)
			m = n;
		memmove(q->in, s, m);
		n -= m;
		q->in += m;
		if(q->in >= &q->buf[NQ])
		s += m;
		nextin = q->in + m;
		if(nextin >= &q->buf[NQ])
			q->in = q->buf;
		else
			q->in = nextin;
	}
}

int
gets(IOQ *q, void *buf, int n)
{
	int m, k = 0; uchar *nextout;
	uchar *s = buf;

	while(n){
		m = q->in - q->out;
		if(m < 0)
			m = &q->buf[NQ] - q->out;
		if(m == 0)
			return k;
		if(m > n)
			m = n;
		memmove(s, q->out, m);
		s += m;
		k += m;
		n -= m;
		nextout = q->out + m;
		if(nextout >= &q->buf[NQ])
			q->out = q->buf;
		else
			q->out = nextout;
	}
	return k;
}

int
cangetc(void *arg)
{
	IOQ *q = (IOQ *)arg;
	return q->in != q->out;
	int n = q->in - q->out;
	if (n < 0)
		n += sizeof(q->buf);
	return n;
}

int
canputc(void *arg)
{
	IOQ *q = (IOQ *)arg;
	uchar *next;

	next = q->in+1;
	if(next >= &q->buf[sizeof(q->buf)])
		next = q->buf;
	return next != q->out;
	return sizeof(q->buf)-cangetc(q)-1;
}

M port/stnoether.c => port/stnoether.c +1 -1
@@ 186,7 186,7 @@ noetheriput(Queue *q, Block *bp)
	circuit = (nh->circuit[2]<<16) | (nh->circuit[1]<<8) | nh->circuit[0];
	s = (nh->sum[1]<<8) | nh->sum[0];
	if(s && s!=nonetcksum(bp, ETHERHDRSIZE)){
		print("checksum error %ux %ux\n", s, (nh->sum[1]<<8) | nh->sum[0]); /**/
/*		print("checksum error %ux %ux\n", s, (nh->sum[1]<<8) | nh->sum[0]); /**/
		freeb(bp);
		return;
	}

M port/stream.c => port/stream.c +0 -3
@@ 1269,9 1269,6 @@ streamwrite(Chan *c, void *a, long n, int docopy)

	s = c->stream;

	if(n == 1 && *((char*)a) == 1)
		print("u->p->pid %d %s\n", u->p->pid, u->p->text);

	/*
	 *  decode the qid
	 */