qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-1.5 2/2] main-loop: partial revert of 5e3bc7


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH for-1.5 2/2] main-loop: partial revert of 5e3bc73
Date: Thu, 16 May 2013 18:54:50 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4

Il 16/05/2013 17:36, Stefan Hajnoczi ha scritto:
> This patch reverts part of 5e3bc735d93dd23f074b5116fd11e1ad8cd4962f.
> 
> Paolo Bonzini wrote this patch and commented:
> 
> "WSAEventSelect is edge-triggered and the event will not be signaled if
> the socket handler does not consume all the data in the socket buffer."
> 
> Signed-off-by: Stefan Hajnoczi <address@hidden>

Signed-off-by: Paolo Bonzini <address@hidden>


> ---
>  main-loop.c | 32 ++++++++++++++------------------
>  1 file changed, 14 insertions(+), 18 deletions(-)
> 
> diff --git a/main-loop.c b/main-loop.c
> index 2b8eed7..cf36645 100644
> --- a/main-loop.c
> +++ b/main-loop.c
> @@ -394,6 +394,20 @@ static int os_host_main_loop_wait(uint32_t timeout)
>          return ret;
>      }
>  
> +    FD_ZERO(&rfds);
> +    FD_ZERO(&wfds);
> +    FD_ZERO(&xfds);
> +    nfds = pollfds_fill(gpollfds, &rfds, &wfds, &xfds);
> +    if (nfds >= 0) {
> +        select_ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv0);
> +        if (select_ret != 0) {
> +            timeout = 0;
> +        }
> +        if (select_ret > 0) {
> +            pollfds_poll(gpollfds, nfds, &rfds, &wfds, &xfds);
> +        }
> +    }
> +
>      g_main_context_prepare(context, &max_priority);
>      n_poll_fds = g_main_context_query(context, max_priority, &poll_timeout,
>                                        poll_fds, ARRAY_SIZE(poll_fds));
> @@ -426,24 +440,6 @@ static int os_host_main_loop_wait(uint32_t timeout)
>          g_main_context_dispatch(context);
>      }
>  
> -    /* Call select after g_poll to avoid a useless iteration and therefore
> -     * improve socket latency.
> -     */
> -
> -    FD_ZERO(&rfds);
> -    FD_ZERO(&wfds);
> -    FD_ZERO(&xfds);
> -    nfds = pollfds_fill(gpollfds, &rfds, &wfds, &xfds);
> -    if (nfds >= 0) {
> -        select_ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv0);
> -        if (select_ret != 0) {
> -            timeout = 0;
> -        }
> -        if (select_ret > 0) {
> -            pollfds_poll(gpollfds, nfds, &rfds, &wfds, &xfds);
> -        }
> -    }
> -
>      return select_ret || g_poll_ret;
>  }
>  #endif
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]