|
|
1.1 ! root 1: #include "u.h" ! 2: #include "../port/lib.h" ! 3: #include "mem.h" ! 4: #include "dat.h" ! 5: #include "fns.h" ! 6: #include "io.h" ! 7: ! 8: #include "ureg.h" ! 9: ! 10: void ! 11: delay(int ms) ! 12: { ! 13: int i; ! 14: ! 15: ms *= 1000; /* experimentally determined */ ! 16: for(i=0; i<ms; i++) ! 17: ; ! 18: } ! 19: ! 20: void ! 21: clock(Ureg *ur) ! 22: { ! 23: Proc *p; ! 24: int user, nrun = 0; ! 25: ! 26: user = (ur->sr&SUPER) == 0; ! 27: if(user){ ! 28: u->dbgreg = ur; ! 29: u->p->pc = ur->pc; ! 30: } ! 31: ! 32: SYNCREG[1] = 0x5F; /* clear interrupt */ ! 33: m->ticks++; ! 34: p = m->proc; ! 35: if(p){ ! 36: nrun = 1; ! 37: p->pc = ur->pc; ! 38: if (p->state==Running) ! 39: p->time[p->insyscall]++; ! 40: } ! 41: nrun = (nrdy+nrun)*1000; ! 42: MACHP(0)->load = (MACHP(0)->load*19+nrun)/20; ! 43: checkalarms(); ! 44: kbdclock(); ! 45: duartclock(); ! 46: mouseclock(); ! 47: dspclock(); ! 48: kproftimer(ur->pc); ! 49: if((ur->sr&SPL(7)) == 0 && p && p->state==Running){ ! 50: if(anyready()){ ! 51: if(p->hasspin) ! 52: p->hasspin = 0; ! 53: else ! 54: sched(); ! 55: } ! 56: if(user){ ! 57: (*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1); /* profiling clock */ ! 58: notify(ur); ! 59: } ! 60: } ! 61: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.