diff --git a/block-raw-posix.c b/block-raw-posix.c index c0404fa..9b136ee 100644 --- a/block-raw-posix.c +++ b/block-raw-posix.c @@ -591,6 +591,12 @@ static int posix_aio_init(void) fcntl(s->fd, F_SETFL, O_NONBLOCK); + { + extern void enable_sigio_timer(int fd); + + enable_sigio_timer(s->fd); + } + qemu_aio_set_fd_handler(s->fd, posix_aio_read, NULL, posix_aio_flush, s); #if defined(__linux__) diff --git a/qemu-tool.c b/qemu-tool.c index 63e2056..c37fdea 100644 --- a/qemu-tool.c +++ b/qemu-tool.c @@ -26,6 +26,10 @@ struct QEMUBH void *opaque; }; +void enable_sigio_timer(int fd) +{ +} + void term_printf(const char *fmt, ...) { } diff --git a/vl.c b/vl.c index c94fdc0..8f66a90 100644 --- a/vl.c +++ b/vl.c @@ -1307,7 +1307,7 @@ static void host_alarm_handler(int host_signum) last_clock = ti; } #endif - if (alarm_has_dynticks(alarm_timer) || + if (1 || alarm_has_dynticks(alarm_timer) || (!use_icount && qemu_timer_expired(active_timers[QEMU_TIMER_VIRTUAL], qemu_get_clock(vm_clock))) || @@ -1383,7 +1383,7 @@ static uint64_t qemu_next_deadline_dyntick(void) #define RTC_FREQ 1024 -static void enable_sigio_timer(int fd) +void enable_sigio_timer(int fd) { struct sigaction act; @@ -1393,7 +1393,7 @@ static void enable_sigio_timer(int fd) act.sa_handler = host_alarm_handler; sigaction(SIGIO, &act, NULL); - fcntl(fd, F_SETFL, O_ASYNC); + fcntl(fd, F_SETFL, O_ASYNC | fcntl(fd, F_GETFL)); fcntl(fd, F_SETOWN, getpid()); }