Re: [PATCH 5/5] ioeventfd: Introduce KVM_IOEVENTFD_FLAG_SOCKET

Avi Kivity
2011-07-06T13:04:19Z

On 07/06/2011 03:58 PM, Sasha Levin wrote:
> What about something as follows:
>
> This requires an addition of a mutex to struct ioeventfd.
>
> 1. When adding a new ioeventfd, scan exiting ioeventfds (we already do
> it anyway) and check whether another ioeventfd is using the socket
> already.
>
> 2. If the existing ioeventfd doesn't have a mutex assigned, create a new
> mutex and assign it to both ioeventfds.

That fails if there is a read already in progress on the old ioeventfd.

Just create or share a mutex every time. Taking a mutex is cheap enough.

> 3. If the existing ioeventfd already has a mutex assigned, copy it to
> the new ioeventfd.
>
> 4. When removing an ioeventfd, do everything the other way around :)
>
> This mutex can be used to lock the write/read pair.
>

Not very elegant, but reasonable and simple.

--
error compiling committee.c: too many arguments to function