public override long GetKernelTicks() { bool en = Processor.DisableInterrupts(); this.AcquireLock(); try { if (this.hpetClock == null) { return (long) pmClock.GetKernelTicks(); } else { return (long) hpetClock.GetKernelTicks(); } } finally { this.ReleaseLock(); Processor.RestoreInterrupts(en); } }
private long InternalGetKernelTicks() { if (!tscSnapshotValid) { if (hpetClock == null) { ticksSnapshot = (long)pmClock.GetKernelTicks(); } else { ticksSnapshot = (long)hpetClock.GetKernelTicks(); } tscSnapshot = Processor.CycleCount; tscSnapshotValid = true; return(ticksSnapshot); } else { long tscDelta = (long)(Processor.CycleCount - tscSnapshot); long tickDelta = (tscDelta * tickScale) >> tickRoll; return(ticksSnapshot + tickDelta); } }