qemu-e2k/include/qemu
Paolo Bonzini 7c9b2bf677 qemu-thread: add a fast path to the Win32 QemuEvent
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>
2015-09-24 20:52:28 +02:00
..
acl.h
atomic.h atomics: add explicit compiler fence in __atomic memory barriers 2015-06-05 19:45:13 +02:00
bitmap.h bitmap: add atomic test and clear 2015-06-05 17:10:00 +02:00
bitops.h bitmap: add atomic set functions 2015-06-05 17:10:00 +02:00
bswap.h cpu_ldst.h, cpu-all.h, bswap.h: Update documentation on ld/st accessors 2015-01-20 15:19:35 +00:00
compatfd.h util: Remove unused functions 2015-04-30 16:05:48 +03:00
compiler.h compiler.h: Use glue() in QEMU_BUILD_BUG_ON define 2015-08-19 16:29:53 +01:00
config-file.h
crc32c.h
envlist.h
error-report.h qemu-error: Add error_vreport() 2014-10-09 15:36:15 +02:00
event_notifier.h
fifo8.h
fprintf-fn.h Stop including qemu-common.h in memory.h 2015-07-06 14:59:09 +02:00
hbitmap.h util/hbitmap: Add an API to reset all set bits in hbitmap 2015-06-23 15:06:16 +01:00
host-utils.h host-utils: Add revbit functions 2015-09-15 07:45:33 -07:00
int128.h
iov.h iov: don't touch iov in iov_send_recv() 2015-06-23 16:05:34 +01:00
log.h disas: Remove uses of CPU env 2015-06-22 17:40:01 +02:00
main-loop.h iohandler: Use aio API 2015-09-07 18:14:03 +02:00
module.h
notify.h
option_int.h
option.h QemuOpts: Wean off qerror_report_err() 2015-06-22 18:20:39 +02:00
osdep.h osdep.h: Add header comment 2015-08-19 16:29:53 +01:00
queue.h queue.h: Add QLIST_FIX_HEAD_PTR() 2015-06-12 17:04:59 +02:00
range.h
ratelimit.h
rcu_queue.h rcu: introduce RCU-enabled QLIST 2015-02-16 17:30:19 +01:00
rcu.h rcu: fix comment with s/rcu_gp_lock/rcu_registry_lock/ 2015-09-09 15:34:54 +02:00
readline.h
rfifolock.h
seqlock.h seqlock: read sequence number atomically 2015-09-07 18:12:39 +02:00
sockets.h Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
thread-posix.h
thread-win32.h qemu-thread: add a fast path to the Win32 QemuEvent 2015-09-24 20:52:28 +02:00
thread.h rcu: add rcu library 2015-02-02 16:55:10 +01:00
throttle.h throttle: refuse bps_max/iops_max without bps/iops 2015-08-05 12:53:48 +01:00
timer.h qemu-common.h: Move muldiv64() to host-utils.h 2015-08-19 16:29:53 +01:00
typedefs.h machine: Eliminate QEMUMachine and qemu_register_machine() 2015-09-19 16:40:30 +02:00
uri.h
xattr.h