summaryrefslogtreecommitdiff
path: root/emulators/qemu/files/patch-dynticks
diff options
context:
space:
mode:
authorJuergen Lock <nox@FreeBSD.org>2009-03-08 17:09:43 +0000
committerJuergen Lock <nox@FreeBSD.org>2009-03-08 17:09:43 +0000
commite332617a7d04779931f8a5672946248611972643 (patch)
tree91300d0dc1bba025d68f3972602e7ebd337f8d6c /emulators/qemu/files/patch-dynticks
parentUpdate to 0.7.22. (diff)
Update to 0.10.0 - from the official changelog:
- TCG support (No longer requires GCC 3.x) - Kernel Virtual Machine acceleration support [kernel bits not ported to FreeBSD yet] - BSD userspace emulation [untested on FreeBSD, probably doesn't work at least for i386 hosts] - Bluetooth emulation and host passthrough support [not ported to FreeBSD yet] - GDB XML register description support - Intel e1000 emulation - HPET emulation - VirtIO paravirtual device support - Marvell 88w8618 / MusicPal emulation - Nokia N-series tablet emulation / OMAP2 processor emulation - PCI hotplug support - Live migration and new save/restore formats - Curses display support - qemu-nbd utility to mount supported block formats [not ported to FreeBSD yet] - Altivec support in PPC emulation and new firmware (OpenBIOS) - Multiple VNC clients are now supported - TLS encryption is now supported in VNC - MIPS Magnum R4000 machine (Herve Poussineau) - Braille support (Samuel Thibault) - Freecom MusicPal system emulation (Jan Kiszka) - OMAP242x and Nokia N800, N810 machines (Andrzej Zaborowski) - EsounD audio driver (Frederick Reeve) - Gravis Ultrasound GF1 sound card (Tibor "TS" Schuetz) - Many, many, bug fixes and new features
Diffstat (limited to 'emulators/qemu/files/patch-dynticks')
-rw-r--r--emulators/qemu/files/patch-dynticks99
1 files changed, 99 insertions, 0 deletions
diff --git a/emulators/qemu/files/patch-dynticks b/emulators/qemu/files/patch-dynticks
new file mode 100644
index 000000000000..05633653d468
--- /dev/null
+++ b/emulators/qemu/files/patch-dynticks
@@ -0,0 +1,99 @@
+Index: qemu/configure
+@@ -1025,11 +1025,26 @@
+ rt=yes
+ fi
+
++##########################################
++# posix timer probe
++cat > $TMPC <<EOF
++#include <time.h>
++int main(void) { timer_create(CLOCK_REALTIME, (struct sigevent *)NULL, (timer_t *)NULL); return 0; }
++EOF
++posixtimer=no
++if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
++ posixtimer=yes
++elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt 2> /dev/null ; then
++ posixtimer=yes
++ rt=yes
++fi
++
+ if test "$rt" = "yes" ; then
+ # Hack, we should have a general purpose LIBS for this sort of thing
+ AIOLIBS="$AIOLIBS -lrt"
+ fi
+
++
+ if test "$mingw32" = "yes" ; then
+ if test -z "$prefix" ; then
+ prefix="c:\\\\Program Files\\\\Qemu"
+@@ -1403,6 +1418,9 @@
+ echo "#define HAVE_FDT 1" >> $config_h
+ echo "FDT_LIBS=-lfdt" >> $config_mak
+ fi
++if test "$posixtimer" = "yes" ; then
++ echo "#define HAVE_POSIX_TIMER 1" >> $config_h
++fi
+
+ # XXX: suppress that
+ if [ "$bsd" = "yes" ] ; then
+Index: qemu/vl.c
+@@ -918,12 +918,16 @@
+ static int unix_start_timer(struct qemu_alarm_timer *t);
+ static void unix_stop_timer(struct qemu_alarm_timer *t);
+
+-#ifdef __linux__
++#ifdef HAVE_POSIX_TIMER
+
+ static int dynticks_start_timer(struct qemu_alarm_timer *t);
+ static void dynticks_stop_timer(struct qemu_alarm_timer *t);
+ static void dynticks_rearm_timer(struct qemu_alarm_timer *t);
+
++#endif
++
++#ifdef __linux__
++
+ static int hpet_start_timer(struct qemu_alarm_timer *t);
+ static void hpet_stop_timer(struct qemu_alarm_timer *t);
+
+@@ -1001,9 +1005,11 @@
+
+ static struct qemu_alarm_timer alarm_timers[] = {
+ #ifndef _WIN32
+-#ifdef __linux__
++#ifdef HAVE_POSIX_TIMER
+ {"dynticks", ALARM_FLAG_DYNTICKS, dynticks_start_timer,
+ dynticks_stop_timer, dynticks_rearm_timer, NULL},
++#endif
++#ifdef __linux__
+ /* HPET - if available - is preferred */
+ {"hpet", 0, hpet_start_timer, hpet_stop_timer, NULL, NULL},
+ /* ...otherwise try RTC */
+@@ -1361,7 +1367,7 @@
+ return delta;
+ }
+
+-#if defined(__linux__) || defined(_WIN32)
++#if defined(HAVE_POSIX_TIMER) || defined(_WIN32)
+ static uint64_t qemu_next_deadline_dyntick(void)
+ {
+ int64_t delta;
+@@ -1506,6 +1512,10 @@
+ close(rtc_fd);
+ }
+
++#endif /* defined(__linux__) */
++
++#ifdef HAVE_POSIX_TIMER
++
+ static int dynticks_start_timer(struct qemu_alarm_timer *t)
+ {
+ struct sigevent ev;
+@@ -1577,7 +1587,7 @@
+ }
+ }
+
+-#endif /* defined(__linux__) */
++#endif /* defined(HAVE_POSIX_TIMER) */
+
+ static int unix_start_timer(struct qemu_alarm_timer *t)
+ {