[Qemu-devel] eventfd_signal()

2015-05-08 Thread Catalin Vasile
Is eventfd blocking? By that I mean: If I signal the guest for
something, will that thread remain blocked till the guest clears the
interrupt?



Re: [Qemu-devel] eventfd_signal()

2015-05-08 Thread Paolo Bonzini


On 08/05/2015 12:58, Catalin Vasile wrote:
> Is eventfd blocking? By that I mean: If I signal the guest for
> something, will that thread remain blocked till the guest clears the
> interrupt?

No.  If you want that, write 2^64-2 to the eventfd and do a

   pfd.fd = ...
   pfd.events = POLLOUT;
   poll(&pfd, 1, -1);

after the write.

With this algorithm, a write will fail with EINVAL if there is already
another pending write somewhere.  The "poll" will still work after the
failed write.

Paolo



Re: [Qemu-devel] eventfd_signal()

2015-05-08 Thread Paolo Bonzini


On 08/05/2015 13:24, Paolo Bonzini wrote:
> 
> 
> On 08/05/2015 12:58, Catalin Vasile wrote:
>> Is eventfd blocking? By that I mean: If I signal the guest for
>> something, will that thread remain blocked till the guest clears the
>> interrupt?
> 
> No.  If you want that, write 2^64-2 to the eventfd and do a
> 
>pfd.fd = ...
>pfd.events = POLLOUT;
>poll(&pfd, 1, -1);
> 
> after the write.
> 
> With this algorithm, a write will fail with EINVAL if there is already
> another pending write somewhere.  The "poll" will still work after the
> failed write.

Oops, EAGAIN...

Paolo