aboutsummaryrefslogtreecommitdiff
path: root/src/hci
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2017-01-25 20:59:15 +0000
committerMichael Brown <mcb30@ipxe.org>2017-01-26 08:17:37 +0000
commit302f1eeb80706fb10067efedb1279fa3f85ddda2 (patch)
tree90e58309094b20a26cedc8244fabf72d96fe6135 /src/hci
parentd37e025b81cb6fd0e7833b927ed138b42a628bc8 (diff)
downloadipxe-302f1eeb80706fb10067efedb1279fa3f85ddda2.zip
ipxe-302f1eeb80706fb10067efedb1279fa3f85ddda2.tar.gz
ipxe-302f1eeb80706fb10067efedb1279fa3f85ddda2.tar.bz2
[time] Allow timer to be selected at runtime
Allow the active timer (providing udelay() and currticks()) to be selected at runtime based on probing during the INIT_EARLY stage of initialisation. TICKS_PER_SEC is now a fixed compile-time constant for all builds, and is independent of the underlying clock tick rate. We choose the value 1024 to allow multiplications and divisions on seconds to be converted to bit shifts. TICKS_PER_MS is defined as 1, allowing multiplications and divisions on milliseconds to be omitted entirely. The 2% inaccuracy in this definition is negligible when using the standard BIOS timer (running at around 18.2Hz). TIMER_RDTSC now checks for a constant TSC before claiming to be a usable timer. (This timer can be tested in KVM via the command-line option "-cpu host,+invtsc".) Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/hci')
-rw-r--r--src/hci/commands/time_cmd.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/hci/commands/time_cmd.c b/src/hci/commands/time_cmd.c
index d1dd49c..08148bf 100644
--- a/src/hci/commands/time_cmd.c
+++ b/src/hci/commands/time_cmd.c
@@ -68,7 +68,7 @@ static int time_exec ( int argc, char **argv ) {
start = currticks();
rc = execv ( argv[1], argv + 1 );
elapsed = ( currticks() - start );
- decisecs = ( 10 * elapsed / ticks_per_sec() );
+ decisecs = ( 10 * elapsed / TICKS_PER_SEC );
printf ( "%s: %d.%ds\n", argv[0],
( decisecs / 10 ), ( decisecs % 10 ) );