~kris/9p

9hist

f03ce73820cb2fc346aec604d2e1391b4be561c2 — David du Colombier 23 years ago 3b749f4
Plan 9 from Bell Labs 2003-02-26
5 files changed, 31 insertions(+), 17 deletions(-)

M pc/vgas3.c
M pc/vgasavage.c
M port/devproc.c
M port/portclock.c
M port/proc.c
M pc/vgas3.c => pc/vgas3.c +8 -0
@@ 18,6 18,8 @@ enum {
	SAVAGE3D	= 0x8A20,	/* PCI DID */
	SAVAGE3DMV	= 0x8A21,
	SAVAGE4		= 0x8A22,
	PROSAVAGEP	= 0x8A25,
	PROSAVAGEK	= 0x8A26,
	SAVAGEMXMV	= 0x8C10,
	SAVAGEMX	= 0x8C11,
	SAVAGEIXMV	= 0x8C12,


@@ 127,6 129,8 @@ s3linear(VGAscr* scr, int* size, int* align)
		id = (vgaxi(Crtx, 0x2D)<<8)|vgaxi(Crtx, 0x2E);
		switch(id){			/* find mmio */
		case SAVAGE4:
		case PROSAVAGEP:
		case PROSAVAGEK:
		case SUPERSAVAGEIXC16:
			/*
			 * We could assume that the MMIO registers


@@ 227,6 231,8 @@ s3load(VGAscr* scr, Cursor* curs)
	case SAVAGEMXMV:
	case SAVAGEIXMV:
	case SAVAGE4:
	case PROSAVAGEP:
	case PROSAVAGEK:
	case SUPERSAVAGEIXC16:
		dolock = 0;
		p += scr->storage;


@@ 577,6 583,8 @@ s3drawinit(VGAscr *scr)
		break;
	case SUPERSAVAGEIXC16:
	case SAVAGE4:
	case PROSAVAGEP:
	case PROSAVAGEK:
		/* scr->mmio is set by s3linear */
		savageinit(scr);
		break;

M pc/vgasavage.c => pc/vgasavage.c +6 -3
@@ 18,7 18,8 @@ enum {
	SAVAGE3D	= 0x8A20,	/* PCI DID */
	SAVAGE3DMV	= 0x8A21,
	SAVAGE4		= 0x8A22,
	SAVAGE4A	= 0x8A26,
	PROSAVAGEP	= 0x8A25,
	PROSAVAGEK	= 0x8A26,
	SAVAGEMXMV	= 0x8C10,
	SAVAGEMX	= 0x8C11,
	SAVAGEIXMV	= 0x8C12,


@@ 363,7 364,8 @@ savagewaitidle(VGAscr *scr)

	switch(scr->id){
	case SAVAGE4:
	case SAVAGE4A:
	case PROSAVAGEP:
	case PROSAVAGEK:
		/* wait for engine idle and FIFO empty */
		statw = (ulong*)((uchar*)scr->mmio+AltStatus0);
		mask = CBEMask | Ge2Idle;


@@ 492,7 494,8 @@ savageinit(VGAscr *scr)
	/* if you add chip IDs here be sure to update savagewaitidle */
	switch(scr->id){
	case SAVAGE4:
	case SAVAGE4A:
	case PROSAVAGEP:
	case PROSAVAGEK:
	case SAVAGEIXMV:
	case SUPERSAVAGEIXC16:
	case SAVAGEMXMV:

M port/devproc.c => port/devproc.c +0 -10
@@ 1197,16 1197,6 @@ procctlreq(Proc *p, char *va, int n)
	case CMwired:
		procwired(p, atoi(cb->f[1]));
		break;
	case CMfair:
		if(!iseve())
			error(Eperm);
		unfair = 0;
		break;
	case CMunfair:
		if(!iseve())
			error(Eperm);
		unfair = 1;
		break;
	}

	poperror();

M port/portclock.c => port/portclock.c +16 -2
@@ 95,6 95,8 @@ timerdel(Timer *dt)
void
hzclock(Ureg *ur)
{
	int callsched;

	m->ticks++;
	if(m->proc)
		m->proc->pc = ur->pc;


@@ 124,8 126,20 @@ hzclock(Ureg *ur)
	if(up == 0 || up->state != Running)
		return;

	/* i.e. don't deschedule an EDF process here! */
	if(anyready() && !edf->isedf(up)){
	if(up->fixedpri){
		/*  fixed priority processes are only preempted by
		 *  higher piority processes.
		 */
		if(anyhigher())
			callsched = 1;
	} else {
		/*  floating priority processes are are preempted
		 *  by all sorts of things.
		 */
		if(anyready() && !edf->isedf(up))
			callsched = 1;
	}
	if(callsched){
		sched();
		splhi();
	}

M port/proc.c => port/proc.c +1 -2
@@ 9,7 9,6 @@ int	nrdy;
Ref	noteidalloc;

long	delayedscheds;	/* statistics */
int unfair;			/* unfair scheduling */

static Ref	pidalloc;



@@ 229,7 228,7 @@ loop:
	 */
	spllo();
	for(;;){
		if(!unfair && (++(m->fairness) & 0x3) == 0){
		if((++(m->fairness) & 0x3) == 0){
			/*
			 *  once in a while, run process that's been waiting longest
			 *  regardless of movetime