~kris/9p

9hist

97ad80ab4009e6d91af0cdd6414b329aa116b9e6 — David du Colombier 29 years ago 5f04073
Plan 9 from Bell Labs 1997-04-17
7 files changed, 90 insertions(+), 76 deletions(-)

M ip/ip.h
M pc/ether79c970.c
M pc/ether82557.c
M pc/etherelnk3.c
M port/devcons.c
M port/netif.c
M port/portdat.h
M ip/ip.h => ip/ip.h +1 -1
@@ 121,7 121,7 @@ void	Mediasetraddr(Media*, Ipaddr);
Ipaddr	Mediagetaddr(Media*);
Ipaddr	Mediagetraddr(Media*);
void	Mediawrite(Media*, Block*, byte*);
int	Mediaifcread(byte*, ulong, int);
int	Mediaifcread(char*, ulong, int);
char*	Mediaifcwrite(char*, int);
void	Mediaresolver(Media*);
void	Mediaread(Media*);

M pc/ether79c970.c => pc/ether79c970.c +17 -13
@@ 156,9 156,9 @@ attach(Ether* ether)
static long
ifstat(Ether* ether, void* a, long n, ulong offset)
{
	Ctlr *ctlr;
	char buf[512];
	char *p;
	int len;
	Ctlr *ctlr;

	ctlr = ether->ctlr;



@@ 170,17 170,21 @@ ifstat(Ether* ether, void* a, long n, ulong offset)
	if(n == 0)
		return 0;

	len = sprint(buf, "Rxbuff: %ld\n", ctlr->rxbuff);
	len += sprint(buf+len, "Crc: %ld\n", ctlr->crc);
	len += sprint(buf+len, "Oflo: %ld\n", ctlr->oflo);
	len += sprint(buf+len, "Fram: %ld\n", ctlr->fram);
	len += sprint(buf+len, "Rtry: %ld\n", ctlr->rtry);
	len += sprint(buf+len, "Lcar: %ld\n", ctlr->lcar);
	len += sprint(buf+len, "Lcol: %ld\n", ctlr->lcol);
	len += sprint(buf+len, "Uflo: %ld\n", ctlr->uflo);
	sprint(buf+len, "Txbuff: %ld\n", ctlr->txbuff);

	return readstr(offset, a, n, buf);
	p = malloc(READSTR);
	len = snprint(p, READSTR, "Rxbuff: %ld\n", ctlr->rxbuff);
	len += snprint(p+len, READSTR-len, "Crc: %ld\n", ctlr->crc);
	len += snprint(p+len, READSTR-len, "Oflo: %ld\n", ctlr->oflo);
	len += snprint(p+len, READSTR-len, "Fram: %ld\n", ctlr->fram);
	len += snprint(p+len, READSTR-len, "Rtry: %ld\n", ctlr->rtry);
	len += snprint(p+len, READSTR-len, "Lcar: %ld\n", ctlr->lcar);
	len += snprint(p+len, READSTR-len, "Lcol: %ld\n", ctlr->lcol);
	len += snprint(p+len, READSTR-len, "Uflo: %ld\n", ctlr->uflo);
	snprint(p+len, READSTR-len, "Txbuff: %ld\n", ctlr->txbuff);

	n = readstr(offset, a, n, p);
	free(p);

	return n;
}

static void

M pc/ether82557.c => pc/ether82557.c +27 -20
@@ 367,12 367,14 @@ promiscuous(void* arg, int on)
static long
ifstat(Ether* ether, void* a, long n, ulong offset)
{
	Ctlr *ctlr;
	char buf[512];
	char *p;
	int len;
	Ctlr *ctlr;
	ulong dump[17];

	ctlr = ether->ctlr;
	lock(&ctlr->dlock);

	ctlr->dump[16] = 0;

	ilock(&ctlr->rlock);


@@ 398,26 400,31 @@ ifstat(Ether* ether, void* a, long n, ulong offset)
		return 0;
	}

	len = sprint(buf, "transmit good frames: %ld\n", ctlr->dump[0]);
	len += sprint(buf+len, "transmit maximum collisions errors: %ld\n", ctlr->dump[1]);
	len += sprint(buf+len, "transmit late collisions errors: %ld\n", ctlr->dump[2]);
	len += sprint(buf+len, "transmit underrun errors: %ld\n", ctlr->dump[3]);
	len += sprint(buf+len, "transmit lost carrier sense: %ld\n", ctlr->dump[4]);
	len += sprint(buf+len, "transmit deferred: %ld\n", ctlr->dump[5]);
	len += sprint(buf+len, "transmit single collisions: %ld\n", ctlr->dump[6]);
	len += sprint(buf+len, "transmit multiple collisions: %ld\n", ctlr->dump[7]);
	len += sprint(buf+len, "transmit total collisions: %ld\n", ctlr->dump[8]);
	len += sprint(buf+len, "receive good frames: %ld\n", ctlr->dump[9]);
	len += sprint(buf+len, "receive CRC errors: %ld\n", ctlr->dump[10]);
	len += sprint(buf+len, "receive alignment errors: %ld\n", ctlr->dump[11]);
	len += sprint(buf+len, "receive resource errors: %ld\n", ctlr->dump[12]);
	len += sprint(buf+len, "receive overrun errors: %ld\n", ctlr->dump[13]);
	len += sprint(buf+len, "receive collision detect errors: %ld\n", ctlr->dump[14]);
	sprint(buf+len, "receive short frame errors: %ld\n", ctlr->dump[15]);

	memmove(dump, ctlr->dump, sizeof(dump));
	unlock(&ctlr->dlock);

	return readstr(offset, a, n, buf);
	p = malloc(READSTR);
	len = snprint(p, READSTR, "transmit good frames: %ld\n", dump[0]);
	len += snprint(p+len, READSTR-len, "transmit maximum collisions errors: %ld\n", dump[1]);
	len += snprint(p+len, READSTR-len, "transmit late collisions errors: %ld\n", dump[2]);
	len += snprint(p+len, READSTR-len, "transmit underrun errors: %ld\n", dump[3]);
	len += snprint(p+len, READSTR-len, "transmit lost carrier sense: %ld\n", dump[4]);
	len += snprint(p+len, READSTR-len, "transmit deferred: %ld\n", dump[5]);
	len += snprint(p+len, READSTR-len, "transmit single collisions: %ld\n", dump[6]);
	len += snprint(p+len, READSTR-len, "transmit multiple collisions: %ld\n", dump[7]);
	len += snprint(p+len, READSTR-len, "transmit total collisions: %ld\n", dump[8]);
	len += snprint(p+len, READSTR-len, "receive good frames: %ld\n", dump[9]);
	len += snprint(p+len, READSTR-len, "receive CRC errors: %ld\n", dump[10]);
	len += snprint(p+len, READSTR-len, "receive alignment errors: %ld\n", dump[11]);
	len += snprint(p+len, READSTR-len, "receive resource errors: %ld\n", dump[12]);
	len += snprint(p+len, READSTR-len, "receive overrun errors: %ld\n", dump[13]);
	len += snprint(p+len, READSTR-len, "receive collision detect errors: %ld\n", dump[14]);
	snprint(p+len, READSTR-len, "receive short frame errors: %ld\n", dump[15]);

	n = readstr(offset, a, n, p);
	free(p);

	return n;
}

static void

M pc/etherelnk3.c => pc/etherelnk3.c +22 -18
@@ 856,9 856,9 @@ interrupt(Ureg*, void* arg)
static long
ifstat(Ether* ether, void* a, long n, ulong offset)
{
	Ctlr *ctlr;
	char buf[512];
	char *p;
	int len;
	Ctlr *ctlr;

	if(n == 0)
		return 0;


@@ 869,22 869,26 @@ ifstat(Ether* ether, void* a, long n, ulong offset)
	statistics(ether);
	iunlock(&ctlr->wlock);

	len = sprint(buf, "interrupts: %ld\n", ctlr->interrupts);
	len += sprint(buf+len, "timer: %ld\n", ctlr->timer);
	len += sprint(buf+len, "carrierlost: %ld\n", ctlr->stats[CarrierLost]);
	len += sprint(buf+len, "sqeerrors: %ld\n", ctlr->stats[SqeErrors]);
	len += sprint(buf+len, "multiplecolls: %ld\n", ctlr->stats[MultipleColls]);
	len += sprint(buf+len, "singlecollframes: %ld\n", ctlr->stats[SingleCollFrames]);
	len += sprint(buf+len, "latecollisions: %ld\n", ctlr->stats[LateCollisions]);
	len += sprint(buf+len, "rxoverruns: %ld\n", ctlr->stats[RxOverruns]);
	len += sprint(buf+len, "framesxmittedok: %ld\n", ctlr->stats[FramesXmittedOk]);
	len += sprint(buf+len, "framesrcvdok: %ld\n", ctlr->stats[FramesRcvdOk]);
	len += sprint(buf+len, "framesdeferred: %ld\n", ctlr->stats[FramesDeferred]);
	len += sprint(buf+len, "bytesrcvdok: %ld\n", ctlr->stats[BytesRcvdOk]);
	len += sprint(buf+len, "bytesxmittedok: %ld\n", ctlr->stats[BytesRcvdOk+1]);
	sprint(buf+len, "badssd: %ld\n", ctlr->stats[BytesRcvdOk+2]);

	return readstr(offset, a, n, buf);
	p = malloc(READSTR);
	len = snprint(p, READSTR, "interrupts: %ld\n", ctlr->interrupts);
	len += snprint(p+len, READSTR-len, "timer: %ld\n", ctlr->timer);
	len += snprint(p+len, READSTR-len, "carrierlost: %ld\n", ctlr->stats[CarrierLost]);
	len += snprint(p+len, READSTR-len, "sqeerrors: %ld\n", ctlr->stats[SqeErrors]);
	len += snprint(p+len, READSTR-len, "multiplecolls: %ld\n", ctlr->stats[MultipleColls]);
	len += snprint(p+len, READSTR-len, "singlecollframes: %ld\n", ctlr->stats[SingleCollFrames]);
	len += snprint(p+len, READSTR-len, "latecollisions: %ld\n", ctlr->stats[LateCollisions]);
	len += snprint(p+len, READSTR-len, "rxoverruns: %ld\n", ctlr->stats[RxOverruns]);
	len += snprint(p+len, READSTR-len, "framesxmittedok: %ld\n", ctlr->stats[FramesXmittedOk]);
	len += snprint(p+len, READSTR-len, "framesrcvdok: %ld\n", ctlr->stats[FramesRcvdOk]);
	len += snprint(p+len, READSTR-len, "framesdeferred: %ld\n", ctlr->stats[FramesDeferred]);
	len += snprint(p+len, READSTR-len, "bytesrcvdok: %ld\n", ctlr->stats[BytesRcvdOk]);
	len += snprint(p+len, READSTR-len, "bytesxmittedok: %ld\n", ctlr->stats[BytesRcvdOk+1]);
	snprint(p+len, READSTR-len, "badssd: %ld\n", ctlr->stats[BytesRcvdOk+2]);

	n = readstr(offset, a, n, p);
	free(p);

	return n;
}

typedef struct Adapter {

M port/devcons.c => port/devcons.c +2 -7
@@ 397,11 397,6 @@ static Dirtab consdir[]={
 	"user",		{Quser},	NAMELEN,	0666,
};

enum
{
	MBS	=	1024,
};

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

long


@@ 672,12 667,12 @@ consread(Chan *c, void *buf, long n, ulong offset)
		return randomread(buf, n);

	case Qdrivers:
		b = malloc(MBS);
		b = malloc(READSTR);
		if(b == nil)
			error(Enomem);
		n = 0;
		for(i = 0; devtab[i] != nil; i++)
			n += snprint(b+n, MBS-n, "#%C %s\n", devtab[i]->dc,  devtab[i]->name);
			n += snprint(b+n, READSTR-n, "#%C %s\n", devtab[i]->dc,  devtab[i]->name);
		n = readstr(offset, buf, n, b);
		free(b);
		return n;

M port/netif.c => port/netif.c +20 -17
@@ 120,9 120,10 @@ netifwalk(Netif *nif, Chan *c, char *name)
Chan*
netifopen(Netif *nif, Chan *c, int omode)
{
	int id = 0;
	int id;
	Netfile *f;

	id = 0;
	if(c->qid.path & CHDIR){
		if(omode != OREAD)
			error(Eperm);


@@ 162,7 163,7 @@ netifread(Netif *nif, Chan *c, void *a, long n, ulong offset)
{
	int i, j;
	Netfile *f;
	char buf[1024];
	char *p;

	if(c->qid.path&CHDIR)
		return devdirread(c, a, n, (Dirtab*)nif, 0, netifgen);


@@ 174,20 175,23 @@ netifread(Netif *nif, Chan *c, void *a, long n, ulong offset)
	case Nctlqid:
		return readnum(offset, a, n, NETID(c->qid.path), NUMSIZE);
	case Nstatqid:
		j = sprint(buf, "in: %d\n", nif->inpackets);
		j += sprint(buf+j, "out: %d\n", nif->outpackets);
		j += sprint(buf+j, "crc errs: %d\n", nif->crcs);
		j += sprint(buf+j, "overflows: %d\n", nif->overflows);
		j += sprint(buf+j, "soft overflows: %d\n", nif->soverflows);
		j += sprint(buf+j, "framing errs: %d\n", nif->frames);
		j += sprint(buf+j, "buffer errs: %d\n", nif->buffs);
		j += sprint(buf+j, "output errs: %d\n", nif->oerrs);
		j += sprint(buf+j, "prom: %d\n", nif->prom);
		j += sprint(buf+j, "addr: ");
		p = malloc(READSTR);
		j = snprint(p, READSTR, "in: %d\n", nif->inpackets);
		j += snprint(p+j, READSTR-j, "out: %d\n", nif->outpackets);
		j += snprint(p+j, READSTR-j, "crc errs: %d\n", nif->crcs);
		j += snprint(p+j, READSTR-j, "overflows: %d\n", nif->overflows);
		j += snprint(p+j, READSTR-j, "soft overflows: %d\n", nif->soverflows);
		j += snprint(p+j, READSTR-j, "framing errs: %d\n", nif->frames);
		j += snprint(p+j, READSTR-j, "buffer errs: %d\n", nif->buffs);
		j += snprint(p+j, READSTR-j, "output errs: %d\n", nif->oerrs);
		j += snprint(p+j, READSTR-j, "prom: %d\n", nif->prom);
		j += snprint(p+j, READSTR-j, "addr: ");
		for(i = 0; i < nif->alen; i++)
			j += sprint(buf+j, "%2.2ux", nif->addr[i]);
		sprint(buf+j, "\n");
		return readstr(offset, a, n, buf);
			j += snprint(p+j, READSTR-j, "%2.2ux", nif->addr[i]);
		snprint(p+j, READSTR-j, "\n");
		n = readstr(offset, a, n, p);
		free(p);
		return n;
	case Ntypeqid:
		f = nif->f[NETID(c->qid.path)];
		return readnum(offset, a, n, f->type, NUMSIZE);


@@ 214,8 218,7 @@ long
netifwrite(Netif *nif, Chan *c, void *a, long n)
{
	Netfile *f;
	char *p;
	char buf[256];
	char *p, buf[64];
	uchar binaddr[Nmaxaddr];

	if(NETTYPE(c->qid.path) != Nctlqid)

M port/portdat.h => port/portdat.h +1 -0
@@ 618,6 618,7 @@ enum
	MAXCRYPT = 	127,
	NUMSIZE	=	12,		/* size of formatted number */
	MB =		(1024*1024),
	READSTR =	1000,		/* temporary buffer size for device reads */
};

extern	Conf	conf;