qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] qemu-char: handle EINTR for TCP character devic


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] qemu-char: handle EINTR for TCP character devices
Date: Tue, 21 Jul 2015 10:16:23 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1


On 21/07/2015 10:10, Peter Maydell wrote:
> On 21 July 2015 at 08:34, Paolo Bonzini <address@hidden> wrote:
>> Signed-off-by: Paolo Bonzini <address@hidden>
>> ---
>>  qemu-char.c | 13 +++++++++++--
>>  1 file changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/qemu-char.c b/qemu-char.c
>> index b2b43c5..d956f8d 100644
>> --- a/qemu-char.c
>> +++ b/qemu-char.c
>> @@ -2798,7 +2798,10 @@ static ssize_t tcp_chr_recv(CharDriverState *chr, 
>> char *buf, size_t len)
>>  #ifdef MSG_CMSG_CLOEXEC
>>      flags |= MSG_CMSG_CLOEXEC;
>>  #endif
>> -    ret = recvmsg(s->fd, &msg, flags);
>> +    do {
>> +        ret = recvmsg(s->fd, &msg, flags);
>> +    } while (ret == -1 && errno == EINTR);
>> +
>>      if (ret > 0 && s->is_unix) {
>>          unix_process_msgfd(chr, &msg);
>>      }
>> @@ -2809,7 +2812,13 @@ static ssize_t tcp_chr_recv(CharDriverState *chr, 
>> char *buf, size_t len)
>>  static ssize_t tcp_chr_recv(CharDriverState *chr, char *buf, size_t len)
>>  {
>>      TCPCharDriver *s = chr->opaque;
>> -    return qemu_recv(s->fd, buf, len, 0);
>> +    ssize_t ret;
>> +
>> +    do {
>> +        ret = qemu_recv(s->fd, buf, len, 0);
>> +    } while (ret == -1 && socket_error() == EINTR);
>> +
>> +    return ret;
>>  }
> 
> ...can you get EINTR on Windows sockets?

No idea, but WSAEINTR exists and even has some hits on Google. :)

Paolo



reply via email to

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