| plan 9 kernel history: overview | file list | diff list |
1999/0227/port/tod.c (diff list | history)
| 1999/0225/sys/src/9/port/tod.c:102,110 – 1999/0227/sys/src/9/port/tod.c:102,110 (short | long | prev | next) | ||
| 1999/0219 | vlong last; // last reading of fast clock vlong off; // offset from epoch to last vlong lasttime; // last return value from gettod | |
| 1999/0227 | vlong delta; // add 'delta' each slow clock tick from sstart to send ulong sstart; // ... ulong send; // ... | |
| 1999/0219 | } tod; int | |
| 1999/0225/sys/src/9/port/tod.c:159,165 – 1999/0227/sys/src/9/port/tod.c:159,164 | ||
| 1999/0225 | tod.multiplier = (TODFREQ<<tod.s1)/f; tod.maxdiff = 1LL<<(10 + lf); | |
| 1999/0219 | iunlock(&tod); | |
| 1999/0225 |
| |
| 1999/0219 | } // | |
| 1999/0225/sys/src/9/port/tod.c:169,182 – 1999/0227/sys/src/9/port/tod.c:168,190 | ||
| 1999/0219 | todset(vlong t, vlong delta, int n) { ilock(&tod); | |
| 1999/0227 | tod.sstart = tod.send = 0; | |
| 1999/0219 | if(t >= 0){ tod.off = t; tod.last = fastticks(nil); tod.lasttime = 0; } else { | |
| 1999/0227 | if(n <= 0) n = 1; n *= HZ; if(delta < 0 && n > -delta) n = -delta; if(delta > 0 && n > delta) n = delta; delta /= n; tod.sstart = MACHP(0)->ticks; tod.send = tod.sstart + n; | |
| 1999/0219 | tod.delta = delta; | |
| 1999/0225/sys/src/9/port/tod.c:188,193 – 1999/0227/sys/src/9/port/tod.c:196,202 | ||
| 1999/0219 | todget(void) { vlong ticks, x, diff; | |
| 1999/0227 | ulong t; | |
| 1999/0219 | ilock(&tod); | |
| 1999/0225/sys/src/9/port/tod.c:197,202 – 1999/0227/sys/src/9/port/tod.c:206,220 | ||
| 1999/0219 | ticks = fastticks(nil); diff = ticks - tod.last; | |
| 1999/0227 | // add in correction if(tod.sstart < tod.send){ t = MACHP(0)->ticks; if(t >= tod.send) t = tod.send; tod.off += tod.delta*(t - tod.sstart); tod.sstart = t; } | |
| 1999/0219 | // convert to epoch | |
| 1999/0225 | x = ((diff>>tod.s2)*tod.multiplier)>>(tod.s1-tod.s2); | |
| 1999/0219 | x += tod.off; | |
| 1999/0225/sys/src/9/port/tod.c:222,236 – 1999/0227/sys/src/9/port/tod.c:240,245 | ||
| 1999/0219 | void todfix(void) { | |
| 1999/0225 |
| |
| 1999/0219 |
| |
| 1999/0225 |
| |