[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 14/42] aio / timers: Add prctl(PR_SET_TIMERSLACK, 1,
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 14/42] aio / timers: Add prctl(PR_SET_TIMERSLACK, 1, ...) to reduce timer slack |
Date: |
Thu, 22 Aug 2013 22:11:10 +0200 |
From: Alex Bligh <address@hidden>
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 <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
configure | 18 ++++++++++++++++++
qemu-timer.c | 7 +++++++
2 files changed, 25 insertions(+)
diff --git a/configure b/configure
index 5659412..0a55c20 100755
--- a/configure
+++ b/configure
@@ -2834,6 +2834,21 @@ if compile_prog "" "" ; then
ppoll=yes
fi
+# check for prctl(PR_SET_TIMERSLACK , ... ) support
+prctl_pr_set_timerslack=no
+cat > $TMPC << EOF
+#include <sys/prctl.h>
+
+int main(void)
+{
+ prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
+ return 0;
+}
+EOF
+if compile_prog "" "" ; then
+ prctl_pr_set_timerslack=yes
+fi
+
# check for epoll support
epoll=no
cat > $TMPC << EOF
@@ -3833,6 +3848,9 @@ fi
if test "$ppoll" = "yes" ; then
echo "CONFIG_PPOLL=y" >> $config_host_mak
fi
+if test "$prctl_pr_set_timerslack" = "yes" ; then
+ echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
+fi
if test "$epoll" = "yes" ; then
echo "CONFIG_EPOLL=y" >> $config_host_mak
fi
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)
--
1.8.3.1
- [Qemu-devel] [PULL 04/42] block: better error message for read only format name, (continued)
- [Qemu-devel] [PULL 04/42] block: better error message for read only format name, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 06/42] vmdk: fix L1 and L2 table size in vmdk3 open, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 05/42] vmdk: Move l1_size check into vmdk_add_extent(), Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 08/42] vmdk: support vmfs files, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 07/42] vmdk: support vmfsSparse files, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 10/42] aio / timers: Rename qemu_new_clock and expose clock types, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 09/42] aio / timers: Rename qemu_timer_* functions, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 11/42] aio / timers: add qemu-timer.c utility functions, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 13/42] aio / timers: add ppoll support with qemu_poll_ns, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 12/42] aio / timers: Consistent treatment of disabled clocks for deadlines, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 14/42] aio / timers: Add prctl(PR_SET_TIMERSLACK, 1, ...) to reduce timer slack,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL 15/42] aio / timers: Make qemu_run_timers and qemu_run_all_timers return progress, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 16/42] aio / timers: Split QEMUClock into QEMUClock and QEMUTimerList, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 17/42] aio / timers: Untangle include files, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 18/42] aio / timers: Add QEMUTimerListGroup and helper functions, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 19/42] aio / timers: Add QEMUTimerListGroup to AioContext, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 20/42] aio / timers: Add a notify callback to QEMUTimerList, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 21/42] aio / timers: aio_ctx_prepare sets timeout from AioContext timers, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 22/42] aio / timers: Add aio_timer_init & aio_timer_new wrappers, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 23/42] aio / timers: Convert aio_poll to use AioContext timers' deadline, Stefan Hajnoczi, 2013/08/22
- [Qemu-devel] [PULL 24/42] aio / timers: Convert mainloop to use timeout, Stefan Hajnoczi, 2013/08/22