7c9b2bf677
QemuEvents are used heavily by call_rcu. We do not want them to be slow, but the current implementation does a kernel call on every invocation of qemu_event_* and won't cut it. So, wrap a Win32 manual-reset event with a fast userspace path. The states and transitions are the same as for the futex and mutex/condvar implementations, but the slow path is different of course. The idea is to reset the Win32 event lazily, as part of a test-reset-test-wait sequence. Such a sequence is, indeed, how QemuEvents are used by RCU and other subsystems! The patch includes a formal model of the algorithm. Tested-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Stefan Weil <sw@weilnetz.de> |
||
---|---|---|
.. | ||
acl.h | ||
atomic.h | ||
bitmap.h | ||
bitops.h | ||
bswap.h | ||
compatfd.h | ||
compiler.h | ||
config-file.h | ||
crc32c.h | ||
envlist.h | ||
error-report.h | ||
event_notifier.h | ||
fifo8.h | ||
fprintf-fn.h | ||
hbitmap.h | ||
host-utils.h | ||
int128.h | ||
iov.h | ||
log.h | ||
main-loop.h | ||
module.h | ||
notify.h | ||
option_int.h | ||
option.h | ||
osdep.h | ||
queue.h | ||
range.h | ||
ratelimit.h | ||
rcu_queue.h | ||
rcu.h | ||
readline.h | ||
rfifolock.h | ||
seqlock.h | ||
sockets.h | ||
thread-posix.h | ||
thread-win32.h | ||
thread.h | ||
throttle.h | ||
timer.h | ||
typedefs.h | ||
uri.h | ||
xattr.h |