diff options
author | aurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-11-11 13:30:53 +0000 |
---|---|---|
committer | aurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-11-11 13:30:53 +0000 |
commit | 3587f82a683122e25da59e1e81150ffde313e54f (patch) | |
tree | bcb8df2f484cb6459bb4924413b2351a19eda4f0 | |
parent | 7aa763c72e5f8358e3ba8bbf1bc328cb8e8fc4de (diff) |
qemu: generate signals on tap I/O
Currently tap does not generate signals on I/O; this causes
network latency to be dependent on the timer tick (1ms without
dyntick, guest dependent with dyntick). By generating a signal
on I/O, we can inform the guest immediately that a packet has
arrived.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5688 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | net.c | 3 | ||||
-rw-r--r-- | vl.c | 2 |
2 files changed, 4 insertions, 1 deletions
@@ -622,6 +622,8 @@ static void tap_send(void *opaque) /* fd support */ +void enable_sigio_timer(int fd); + static TAPState *net_tap_fd_init(VLANState *vlan, int fd) { TAPState *s; @@ -630,6 +632,7 @@ static TAPState *net_tap_fd_init(VLANState *vlan, int fd) if (!s) return NULL; s->fd = fd; + enable_sigio_timer(fd); s->vc = qemu_new_vlan_client(vlan, tap_receive, NULL, s); qemu_set_fd_handler(s->fd, tap_send, NULL, s); snprintf(s->vc->info_str, sizeof(s->vc->info_str), "tap: fd=%d", fd); @@ -1403,7 +1403,7 @@ static int fcntl_setfl(int fd, int flag) #define RTC_FREQ 1024 -static void enable_sigio_timer(int fd) +void enable_sigio_timer(int fd) { struct sigaction act; |