tos = (Tos*)(USTKTOP-sizeof(Tos));
t = fastticks(nil);
tos->kcycles += t - up->kentry;
- tos->pcycles = up->pcycles;
+ tos->pcycles = t + up->pcycles;
tos->cyclefreq = Frequency;
tos->pid = up->pid;
procsetup(Proc* p)
{
fpusysprocsetup(p);
+
+ cycles(&p->kentry);
+ p->pcycles = -p->kentry;
}
void
-procfork(Proc *)
+procfork(Proc* p)
{
+ p->kentry = up->kentry;
+ p->pcycles = -p->kentry;
}
/*
cycles(&t);
p->pcycles += t;
+ p->kentry -= t;
fpuprocsave(p);
}
if(p->kp)
return;
- t = lcycles();
+
+ cycles(&t);
p->pcycles -= t;
+ p->kentry += t;
fpuprocrestore(p);
}
* atomic ops
* make sure that we don't drag in the C library versions
*/
-
-long
-_xdec(long *p)
-{
- int s, v;
-
- s = splhi();
- v = --*p;
- splx(s);
- return v;
-}
-
-void
-_xinc(long *p)
-{
- int s;
-
- s = splhi();
- ++*p;
- splx(s);
-}
-
int
ainc(int *p)
{