~kris/9p

9hist

6dc810c2171ecfbd5b52dbb0d7704cbc66f4ab88 — David du Colombier 34 years ago 7ab5a6b
Plan 9 from Bell Labs 1992-08-14
6 files changed, 75 insertions(+), 42 deletions(-)

M boot/boot.c
M port/devcons.c
M port/devkprof.c
M port/devproc.c
M ss/io.h
M ss/screen.c
M boot/boot.c => boot/boot.c +1 -1
@@ 39,7 39,7 @@ boot(int argc, char *argv[])
	open("#c/cons", OREAD);
	open("#c/cons", OWRITE);
	open("#c/cons", OWRITE);
/**/	print("argc=%d\n", argc);
/*	print("argc=%d\n", argc);
	for(fd = 0; fd < argc; fd++)
		print("%s ", argv[fd]);
	print("\n");/**/

M port/devcons.c => port/devcons.c +27 -11
@@ 484,12 484,12 @@ consclose(Chan *c)
long
consread(Chan *c, void *buf, long n, ulong offset)
{
	int ch, i, j, k, id;
	int ch, i, k, id;
	ulong l;
	char *cbuf = buf;
	char *chal;
	char *chal, *b, *bp;
	Block *cb;
	char tmp[6*NUMSIZE], xbuf[512];
	char tmp[128];	/* must be >= 6*NUMSIZE */
	Mach *mp;

	if(n <= 0)


@@ 648,24 648,40 @@ consread(Chan *c, void *buf, long n, ulong offset)
		return readnum(offset, buf, n, HZ, NUMSIZE);

	case Qsysstat:
		j = 0;
		xbuf[0] = 0;
		b = smalloc(conf.nmach*(NUMSIZE*8+1) + 1);	/* +1 for NUL */
		bp = b;
		for(id = 0; id < 32; id++) {
			if(active.machs & (1<<id)) {
				mp = MACHP(id);
				j += sprint(&xbuf[j], "%d %d %d %d %d %d %d %d\n",
					id, mp->cs, mp->intr, mp->syscall, mp->pfault,
					    mp->tlbfault, mp->tlbpurge, mp->load);
				readnum(0, bp, NUMSIZE, id, NUMSIZE);
				bp += NUMSIZE;
				readnum(0, bp, NUMSIZE, mp->cs, NUMSIZE);
				bp += NUMSIZE;
				readnum(0, bp, NUMSIZE, mp->intr, NUMSIZE);
				bp += NUMSIZE;
				readnum(0, bp, NUMSIZE, mp->syscall, NUMSIZE);
				bp += NUMSIZE;
				readnum(0, bp, NUMSIZE, mp->pfault, NUMSIZE);
				bp += NUMSIZE;
				readnum(0, bp, NUMSIZE, mp->tlbfault, NUMSIZE);
				bp += NUMSIZE;
				readnum(0, bp, NUMSIZE, mp->tlbpurge, NUMSIZE);
				bp += NUMSIZE;
				readnum(0, bp, NUMSIZE, mp->load, NUMSIZE);
				bp += NUMSIZE;
				*bp++ = '\n';
			}
		}
		return readstr(offset, buf, n, xbuf);
		n = readstr(offset, buf, n, b);
		free(b);
		return n;

	case Qswap:
		sprint(xbuf, "%d/%d memory %d/%d swap\n",
		sprint(tmp, "%d/%d memory %d/%d swap\n",
				palloc.user-palloc.freecount, palloc.user, 
				conf.nswap-swapalloc.free, conf.nswap);

		return readstr(offset, buf, n, xbuf);
		return readstr(offset, buf, n, tmp);

	case Qsysname:
		return readstr(offset, buf, n, sysname);

M port/devkprof.c => port/devkprof.c +15 -10
@@ 36,26 36,31 @@ void kproftimer(ulong);
void
kprofreset(void)
{
	ulong n;

	kprof.minpc = KTZERO;
	kprof.maxpc = (ulong)etext;
	kprof.nbuf = (kprof.maxpc-kprof.minpc) >> LRES;
	n = kprof.nbuf*SZ;
	kprof.buf = xalloc(n);
	kproftab[0].length = n;
	if(SZ != sizeof kprof.buf[0])
		panic("kprof size");
}

void
kprofinit(void)
{
	if(SZ != sizeof kprof.buf[0])
		panic("kprof size");
}

Chan *
kprofattach(char *spec)
{
	ulong n;

	/* allocate when first used */
	kprof.minpc = KTZERO;
	kprof.maxpc = (ulong)etext;
	kprof.nbuf = (kprof.maxpc-kprof.minpc) >> LRES;
	n = kprof.nbuf*SZ;
	if(kprof.buf == 0) {
		kprof.buf = xalloc(n);
		if(kprof.buf == 0)
			error(Enomem);
	}
	kproftab[0].length = n;
	return devattach('T', spec);
}
Chan *

M port/devproc.c => port/devproc.c +10 -1
@@ 20,7 20,7 @@ enum{
	Qtext,
};

#define	STATSIZE	(2*NAMELEN+12+6*12)
#define	STATSIZE	(2*NAMELEN+12+7*12)
Dirtab procdir[]={
	"ctl",		{Qctl},		0,			0000,
	"mem",		{Qmem},		0,			0000,


@@ 233,6 233,7 @@ procread(Chan *c, void *va, long n, ulong offset)
	Proc *p;
	Page *pg;
	KMap *k;
	Segment *s;
	int i, j;
	long l;
	User *up;


@@ 345,6 346,14 @@ if((p->state < Dead) || (p->state > Rendezvous))
			l = TK2MS(l);
			readnum(0, statbuf+j+NUMSIZE*i, NUMSIZE, l, NUMSIZE);
		}
		/* ignore stack, which is mostly non-existent */
		l = 0;
		for(i=1; i<NSEG; i++){
			s = p->seg[i];
			if(s)
				l += s->top - s->base;
		}
		readnum(0, statbuf+j+NUMSIZE*6, NUMSIZE, l>>10, NUMSIZE);
		memmove(a, statbuf+offset, n);
		return n;


M ss/io.h => ss/io.h +3 -3
@@ 1,6 1,6 @@
#define	FRAMEBUF	0xFE000000
#define	FRAMEBUFID	0xFE000000
#define	DISPLAYRAM	0xFE800000
#define	FRAMEBUFID	(FRAMEBUF+0x000000)
#define	DISPLAYRAM	(FRAMEBUF+0x800000)
#define	EPROM		0xF6000000
#define	CLOCK		0xF3000000
#define	CLOCKFREQ	1000000		/* one microsecond increments */


@@ 36,7 36,7 @@ struct SCCdev
#define NVWRITE	(2048-8-32)	/* minus RTC, minus ID prom */

/*
 * real-time clock (every 4th location)
 * real-time clock
 */
typedef struct RTCdev	RTCdev;
struct RTCdev

M ss/screen.c => ss/screen.c +19 -16
@@ 27,11 27,10 @@ void		(*kprofp)(ulong);
typedef struct	DAC DAC;
struct DAC
{
	uchar	pad[16];
	ulong	dacaddr;	/* DAC address register */
	ulong	daccolor;	/* DAC color palette */
	ulong	daccntrl;	/* DAC control register */
	ulong	dacovrl;	/* DAC overlay palette */
uchar pad[3];	uchar	dacaddr;	/* DAC address register */
uchar pad[3];	uchar	daccolor;	/* DAC color palette */
uchar pad[3];	uchar	daccntrl;	/* DAC control register */
uchar pad[3];	uchar	dacovrl;	/* DAC overlay palette */
}*dac;

GBitmap gscreen;


@@ 45,7 44,7 @@ struct screens
	ulong	dacaddr;
}screens[] = {
	{ "bwtwo", 1152, 900, 0, 0x400000 },
	{ "cgsix", 1152, 900, 3, 0x400000 },
	{ "cgsix", 1152, 900, 3, 0x200000 },
	{ "cgthree", 1152, 900, 3, 0x200000 },
	0
};


@@ 85,7 84,7 @@ screeninit(char *str)
	out.pos.x = MINX;
	out.pos.y = 0;
	out.bwid = defont0.info[' '].width;
	dac = (DAC*)kmappa(FRAMEBUF+s->dacaddr, PTENOCACHE|PTEIO);
	dac = (DAC*)kmappa(FRAMEBUF+s->dacaddr, PTENOCACHE|PTEMAINMEM);
	if(gscreen.ldepth == 3){
		havecol = 0;	
		if(havecol) {


@@ 114,13 113,12 @@ dac->daccntrl = 0x40;
dac->dacaddr = 7;
dac->daccntrl = 0x00;

			dac->dacaddr = 0;
			for(i=0; i<252; i+=4) {
				dac->daccolor = ~rep(i,8);
				dac->daccolor = ~rep(i,8);
				dac->daccolor = ~rep(i,8);
			for(i=0; i<255; i++) {
				dac->dacaddr = i;
				dac->daccolor = i;
				dac->daccolor = i;
				dac->daccolor = i;
			}

/*
			for(i = 0; i<256; i++)
				setcolor(i, ~rep(i,8), ~rep(i,8), ~rep(i,8));


@@ 133,9 131,14 @@ void
mapdump(void)
{
	int i;
	dac->dacaddr = 0;
	for(i=0; i<100; i++)
		print("%lux ", dac->daccolor);
	for(i=0; i<100; i++) {
		dac->dacaddr = i;
		dac->daccolor = i;
		dac->daccolor = i;
		dac->daccolor = i;
		dac->dacaddr = i;
		print("%ux.%ux.%ux ", dac->daccolor, dac->daccolor, dac->daccolor);
	}
}

void