aboutsummaryrefslogtreecommitdiff
path: root/qemu-timer.c
diff options
context:
space:
mode:
authorAlex Bligh <alex@alex.org.uk>2013-08-21 16:02:44 +0100
committerStefan Hajnoczi <stefanha@redhat.com>2013-08-22 19:10:27 +0200
commitcd758dd0acaaf1f76f9727d4409915f3293db07a (patch)
treea7d393d3cb44bc46c4a28acc491a5a53fba1bd59 /qemu-timer.c
parent4e0c6529fcb5ccbed5eb2c4f094264eb447d49ea (diff)
downloadqemu-cd758dd0acaaf1f76f9727d4409915f3293db07a.zip
qemu-cd758dd0acaaf1f76f9727d4409915f3293db07a.tar.gz
qemu-cd758dd0acaaf1f76f9727d4409915f3293db07a.tar.bz2
aio / timers: Add prctl(PR_SET_TIMERSLACK, 1, ...) to reduce timer slack
Where supported, called prctl(PR_SET_TIMERSLACK, 1, ...) to set one nanosecond timer slack to increase precision of timer calls. Signed-off-by: Alex Bligh <alex@alex.org.uk> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'qemu-timer.c')
-rw-r--r--qemu-timer.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/qemu-timer.c b/qemu-timer.c
index 120d58f..74f904b 100644
--- a/qemu-timer.c
+++ b/qemu-timer.c
@@ -41,6 +41,10 @@
#include <poll.h>
#endif
+#ifdef CONFIG_PRCTL_PR_SET_TIMERSLACK
+#include <sys/prctl.h>
+#endif
+
/***********************************************************/
/* timers */
@@ -507,6 +511,9 @@ void init_clocks(void)
vm_clock = qemu_clock_new(QEMU_CLOCK_VIRTUAL);
host_clock = qemu_clock_new(QEMU_CLOCK_HOST);
}
+#ifdef CONFIG_PRCTL_PR_SET_TIMERSLACK
+ prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
+#endif
}
uint64_t timer_expire_time_ns(QEMUTimer *ts)