~kris/9p

9hist

af21737121c0679ff273c5b2e602a090e88a1aa4 — David du Colombier 30 years ago c2eb20a
Plan 9 from Bell Labs 1996-03-15
M carrera/clock.c => carrera/clock.c +0 -3
@@ 47,9 47,6 @@ clockinit(void)
void
clock(Ureg *ur)
{
	int l;
	Segment *s;

	wrcompare(rdcount()+(m->speed*1000000)/HZ);

	m->ticks++;

M pc/devata.c => pc/devata.c +6 -6
@@ 1344,12 1344,12 @@ atareplinit(Drive *dp)
	/*
	 *  parse replacement table.
	 */
	n = getfields((char*)buf, line, Nrepl+1, "\n");
	n = parsefields((char*)buf, line, Nrepl+1, "\n");
	if(strncmp(line[0], REPLMAGIC, sizeof(REPLMAGIC)-1)){
		dp->repl.p = 0;
	} else {
		for(dp->repl.nrepl = 0, i = 1; i < n; i++, dp->repl.nrepl++){
			if(getfields(line[i], field, 1, " ") != 1)
			if(parsefields(line[i], field, 1, " ") != 1)
				break;
			dp->repl.blk[dp->repl.nrepl] = strtoul(field[0], 0, 0);
			if(dp->repl.blk[dp->repl.nrepl] <= 0)


@@ 1424,13 1424,13 @@ atapart(Drive *dp)
		i = 0;
		ataxfer(dp, &dp->p[0], Cread, (dp->p[0].end-2)*dp->bytes, dp->bytes, buf);
		buf[dp->bytes-1] = 0;
		n = getfields((char*)buf, line, Npart+1, "\n");
		n = parsefields((char*)buf, line, Npart+1, "\n");
		if(n > 0 && strncmp(line[0], PARTMAGIC, sizeof(PARTMAGIC)-1) == 0)
			i = 1;
		else{
			ataxfer(dp, &dp->p[1], Cread, 0, dp->bytes, buf);
			buf[dp->bytes-1] = 0;
			n = getfields((char*)buf, line, Npart+1, "\n");
			n = parsefields((char*)buf, line, Npart+1, "\n");
			if(n == 0 || strncmp(line[0], PARTMAGIC, sizeof(PARTMAGIC)-1))
				i = 1;
		}


@@ 1442,7 1442,7 @@ atapart(Drive *dp)
	}
	else{
		strcpy((char*)buf, p);
		n = getfields((char*)buf, line, Npart+1, "\n");
		n = parsefields((char*)buf, line, Npart+1, "\n");
	}

	/*


@@ 1450,7 1450,7 @@ atapart(Drive *dp)
	 */
	if(n > 0 && strncmp(line[0], PARTMAGIC, sizeof(PARTMAGIC)-1) == 0){
		for(i = 1; i < n; i++){
			if(getfields(line[i], field, 3, " ") != 3)
			if(parsefields(line[i], field, 3, " ") != 3)
				break;
			if(pp >= &dp->p[Npart])
				break;

M pc/devfloppy.c => pc/devfloppy.c +1 -1
@@ 1048,7 1048,7 @@ floppyformat(Drive *dp, char *params)
	/*
	 *  set the type
	 */
	if(getfields(params, f, 3, " ") > 1){
	if(parsefields(params, f, 3, " ") > 1){
		for(t = floppytype; t < &floppytype[NTYPES]; t++){
			if(strcmp(f[1], t->name)==0 && t->dt==dp->dt){
				dp->t = t;

M pc/devvga.c => pc/devvga.c +1 -1
@@ 242,7 242,7 @@ vgactl(char *arg)
	Hwgc *hwgcp;
	Vgac *vgacp;

	n = getfields(arg, field, 4, " ");
	n = parsefields(arg, field, 4, " ");
	if(n < 2)
		error(Ebadarg);


M pc/kbd.c => pc/kbd.c +1 -1
@@ 551,7 551,7 @@ mousectl(char *arg)
	int n, x;
	char *field[3];

	n = getfields(arg, field, 3, " ");
	n = parsefields(arg, field, 3, " ");
	if(strncmp(field[0], "serial", 6) == 0){
		switch(n){
		case 1:

M port/devaudio.c => port/devaudio.c +1 -1
@@ 822,7 822,7 @@ audiowrite(Chan *c, char *a, long n, ulong)
		memmove(buf, a, n);
		buf[n] = '\0';

		nf = getfields(buf, field, Ncmd, " \t\n");
		nf = parsefields(buf, field, Ncmd, " \t\n");
		for(i = 0; i < nf; i++){
			/*
			 * a number is volume

M port/devcons.c => port/devcons.c +9 -0
@@ 361,6 361,7 @@ enum{
	Qpid,
	Qppid,
	Qrandom,
	Qreboot,
	Qswap,
	Qsysname,
	Qsysstat,


@@ 388,6 389,7 @@ Dirtab consdir[]={
	"pid",		{Qpid},		NUMSIZE,	0444,
	"ppid",		{Qppid},	NUMSIZE,	0444,
	"random",	{Qrandom},	0,		0664,
	"reboot",	{Qreboot},	0,		0664,
	"swap",		{Qswap},	0,		0664,
	"sysname",	{Qsysname},	0,		0664,
	"sysstat",	{Qsysstat},	0,		0666,


@@ 828,6 830,13 @@ conswrite(Chan *c, void *va, long n, ulong offset)
		conslights(a, n);
		break;

	case Qreboot:
		if(!iseve())
			error(Eperm);
		if(strncmp(a, "reboot", 6) == 0)
			exit(0);
		break;

	case Qsysstat:
		for(id = 0; id < 32; id++) {
			if(active.machs & (1<<id)) {

M port/devsd.c => port/devsd.c +2 -2
@@ 328,10 328,10 @@ sdrdpart(Disk *d)
	/*
	 *  parse partition table.
	 */
	n = getfields(b, line, Npart+2, "\n");
	n = parsefields(b, line, Npart+2, "\n");
	if(n > 0 && strncmp(line[0], MAGIC, sizeof(MAGIC)-1) == 0) {
		for(i = 1; i < n; i++) {
			switch(getfields(line[i], field, 3, " ")) {
			switch(parsefields(line[i], field, 3, " ")) {
			case 2:
				if(strcmp(field[0], "unit") == 0)
					strncpy(d->vol, field[1], NAMELEN);

M port/portfns.h => port/portfns.h +1 -1
@@ 91,7 91,6 @@ void		freepte(Segment*, Pte*);
void		freesegs(int);
void		freesession(Session*);
void		getcolor(ulong, ulong*, ulong*, ulong*);
int		getfields(char*, char**, int, char*);
void		gotolabel(Label*);
void		graphicsactive(int);
void		graphicscmap(int);


@@ 167,6 166,7 @@ int		openmode(ulong);
Block*		padblock(Block*, int);
void		pageinit(void);
void		panic(char*, ...);
int		parsefields(char*, char**, int, char*);
void		pexit(char*, int);
void		pgrpcpy(Pgrp*, Pgrp*);
void		pgrpnote(ulong, char*, long, int);

M port/proc.c => port/proc.c +15 -15
@@ 187,23 187,23 @@ loop:
	spllo();
	for(;;){
		/*
		 *  Once a second we look for a long waiting process
		 *  in the lowest priority queue to make sure nothing
		 *  gets starved out by a malfunctioning high priority
		 *  process.
		 *  get lowest priority process that this
		 *  processor can run given affinity constraints
		 *  and that hasn't run in a while
		 */
		if((m->ticks % HZ) == 0){
		if((m->ticks & 3) == 0){
			for(rq = runq; rq < &runq[Nrq]; rq++){
				p = rq->head;
				if(p == 0 || p->mp != MACHP(m->machno))
				if(p == 0)
					continue;

				i = m->ticks - p->readytime;
				if(i < HZ)
					break;

				p->art = 0;
				goto found;
				for(; p; p = p->rnext){
					if(p->mp != MACHP(m->machno))
					if(p->movetime >= m->ticks)
						continue;
					i = m->ticks - p->readytime;
					if(i >= 2*nrdy*p->art)
						goto found;
				}
			}
		}



@@ 216,13 216,13 @@ loop:
			if(p == 0)
				continue;
			for(; p; p = p->rnext){
				if(p->mp == MACHP(m->machno) || p->movetime < m->ticks)
				if(p->mp == MACHP(m->machno)
				|| p->movetime < m->ticks)
					goto found;
			}
		}
	}


found:
	splhi();
	lock(runq);