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 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html