M carrera/mmu.c => carrera/mmu.c +0 -2
@@ 47,13 47,11 @@ kmapinit(void)
{
KMap *k, *klast;
- lock(&kmaplock);
kmapfree = kpte;
klast = &kpte[KPTESIZE-1];
for(k=kpte; k<klast; k++)
k->next = k+1;
k->next = 0;
- unlock(&kmaplock);
m->ktlbnext = TLBROFF;
}
M port/portdat.h => port/portdat.h +2 -1
@@ 577,7 577,8 @@ struct Proc
int (*notify)(void*, char*);
Mach *mp; /* machine this process last ran on */
- ulong priority; /* priority level 0 is highest */
+ ulong priority; /* priority level */
+ ulong basepri; /* base priority level */
ulong movetime; /* last time process switched processors */
void *ureg; /* User registers for notes */
M port/proc.c => port/proc.c +5 -7
@@ 119,13 119,11 @@ ready(Proc *p)
s = splhi();
- if(p->priority != 0){
- if(p->state == Running){
- if(p->priority < Nrq-1)
- p->priority++;
- } else
- p->priority = 1;
- }
+ if(p->state == Running){
+ if(p->priority < Nrq-1)
+ p->priority++;
+ } else
+ p->priority = p->basepri;
rq = &runq[p->priority];
lock(runq);
M port/sysproc.c => port/sysproc.c +4 -2
@@ 166,6 166,7 @@ sysrfork(ulong *arg)
*/
flushmmu();
p->priority = up->priority;
+ p->basepri = up->basepri;
p->mp = up->mp;
ready(p);
return pid;
@@ 386,9 387,10 @@ sysexec(ulong *arg)
* '/' processes are high priority (hack to make /ip more responsive)
*/
if(devchar[tc->type] == L'/')
- up->priority = 0;
+ up->basepri = 0;
else
- up->priority = 1;
+ up->basepri = 1;
+ up->priority = up->basepri;
close(tc);
/*
M port/taslock.c => port/taslock.c +2 -9
@@ 8,19 8,12 @@
void
lock(Lock *l)
{
- int loop;
-
if(tas(&l->key) == 0)
return;
- loop = 50000000;
for(;;){
- while(l->key) {
- if(loop-- <= 0) {
- dumpstack();
- panic("lock loop: lock %lux\n", l);
- }
- }
+ while(l->key)
+ ;
if(tas(&l->key) == 0)
return;
}