--- a/kernel/eka/include/nkernsmp/x86/ncern.h Tue Aug 31 16:34:26 2010 +0300
+++ b/kernel/eka/include/nkernsmp/x86/ncern.h Wed Sep 01 12:34:56 2010 +0100
@@ -36,6 +36,20 @@
{
};
+/** Timer frequency specification
+
+Stores a frequency as a fraction of a (separately stored) maximum.
+The frequency must be at least 1/256 of the maximum.
+
+@internalTechnology
+@prototype
+*/
+struct STimerMult
+ {
+ TUint32 iFreq; // frequency as a fraction of maximum possible, multiplied by 2^32
+ TUint32 iInverse; // 2^24/(iFreq/2^32) = 2^56/iFreq
+ };
+
/** Variant interface block
@internalTechnology
@prototype
@@ -45,9 +59,8 @@
TUint64 iMaxCpuClock; // maximum possible CPU clock frequency on this system
TUint32 iTimestampFreq; // rate at which timestamp increments
TUint32 iMaxTimerClock; // maximum possible local timer clock frequency
- SRatio* iTimerFreqR[KMaxCpus]; // timer[i] frequency as a fraction of iMaxTimerClock
- SRatio* iCpuFreqR[KMaxCpus]; // CPU[i] frequency as a fraction of iMaxCpuClock
- SRatio* iTimestampFreqR; // timestamp counter frequency as a fraction of
+ volatile STimerMult* iTimerMult[KMaxCpus]; // timer[i] frequency as a fraction of iMaxTimerClock
+ volatile TUint32* iCpuMult[KMaxCpus]; // CPU[i] frequency / iMaxCpuClock * 2^32
};
// End of file