Ed Swierk wrote:
3. qemu sleeps soundly while packets back up in slirp's buffers. slirp socket fds should be added to the main qemu select() loop to avoid unnecessary delays.
I agree, but your patch does not suppress the slirp select(). I tried to do it with the following patch but slirp becomes twice slower and I cannot get a good explanation. Maybe you could look at that problem so that a real correction can be commited.
Regards, Fabrice. Index: vl.c =================================================================== RCS file: /sources/qemu/qemu/vl.c,v retrieving revision 1.180 diff -u -w -r1.180 vl.c --- vl.c 30 Apr 2006 22:53:25 -0000 1.180 +++ vl.c 1 May 2006 12:17:36 -0000 @@ -4361,7 +4361,7 @@ void main_loop_wait(int timeout) { IOHandlerRecord *ioh, *ioh_next; - fd_set rfds, wfds; + fd_set rfds, wfds, xfds; int ret, nfds; struct timeval tv; PollingEntry *pe; @@ -4382,6 +4382,7 @@ nfds = -1; FD_ZERO(&rfds); FD_ZERO(&wfds); + FD_ZERO(&xfds); for(ioh = first_io_handler; ioh != NULL; ioh = ioh->next) { if (ioh->fd_read && (!ioh->fd_read_poll || @@ -4403,7 +4404,12 @@ #else tv.tv_usec = timeout * 1000; #endif - ret = select(nfds + 1, &rfds, &wfds, NULL, &tv); +#if defined(CONFIG_SLIRP) + if (slirp_inited) { + slirp_select_fill(&nfds, &rfds, &wfds, &xfds); + } +#endif + ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv); if (ret > 0) { /* XXX: better handling of removal */ for(ioh = first_io_handler; ioh != NULL; ioh = ioh_next) { @@ -4416,29 +4422,13 @@ } } } -#ifdef _WIN32 - tap_win32_poll(); -#endif - #if defined(CONFIG_SLIRP) - /* XXX: merge with the previous select() */ - if (slirp_inited) { - fd_set rfds, wfds, xfds; - int nfds; - struct timeval tv; - - nfds = -1; - FD_ZERO(&rfds); - FD_ZERO(&wfds); - FD_ZERO(&xfds); - slirp_select_fill(&nfds, &rfds, &wfds, &xfds); - tv.tv_sec = 0; - tv.tv_usec = 0; - ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv); - if (ret >= 0) { + if (slirp_inited && ret >= 0) { slirp_select_poll(&rfds, &wfds, &xfds); } - } +#endif +#ifdef _WIN32 + tap_win32_poll(); #endif if (vm_running) { _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel