qemu-e2k/include
Paolo Bonzini afbe70535f main-loop: introduce qemu_mutex_iothread_locked
This function will be used to avoid recursive locking of the iothread lock
whenever address_space_rw/ld*/st* are called with the BQL held, which is
almost always the case.

Tracking whether the iothread is owned is very cheap (just use a TLS
variable) but requires some care because now the lock must always be
taken with qemu_mutex_lock_iothread().  Previously this wasn't the case.
Outside TCG mode this is not a problem.  In TCG mode, we need to be
careful and avoid the "prod out of compiled code" step if already
in a VCPU thread.  This is easily done with a check on current_cpu,
i.e. qemu_in_vcpu_thread().

Hopefully, multithreaded TCG will get rid of the whole logic to kick
VCPUs whenever an I/O event occurs!

Cc: Frederic Konrad <fred.konrad@greensocs.com>
Message-Id: <1434646046-27150-3-git-send-email-pbonzini@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-07-01 15:45:50 +02:00
..
block Include monitor/monitor.h exactly where needed 2015-06-22 18:20:41 +02:00
disas disas: Remove uses of CPU env 2015-06-22 17:40:01 +02:00
exec cpu-defs: Move out TB_JMP defines 2015-06-26 16:00:51 +02:00
fpu softfloat: expand out STATUS macro 2015-02-06 16:11:38 +00:00
hw virtio-input: evdev passthrough 2015-06-23 10:32:35 +02:00
libdecnumber
migration Add a protective section footer 2015-06-12 06:54:01 +02:00
monitor Include monitor/monitor.h exactly where needed 2015-06-22 18:20:41 +02:00
net qmp: Wean off qerror_report() 2015-06-22 18:20:40 +02:00
qapi qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
qemu main-loop: introduce qemu_mutex_iothread_locked 2015-07-01 15:45:50 +02:00
qom qom: Don't pass string table to object_get_enum() function 2015-06-19 18:42:48 +02:00
standard-headers virtio: update headers, add virtio-gpu (2d) 2015-06-10 11:02:00 +02:00
sysemu block-backend: Introduce blk_drain() 2015-06-23 15:06:16 +01:00
ui Include monitor/monitor.h exactly where needed 2015-06-22 18:20:41 +02:00
config.h
elf.h linux/elf.h update 2015-05-27 17:52:03 +02:00
glib-compat.h glib: remove stale compat functions 2015-05-22 15:58:06 -04:00
qemu-common.h qemu-common: add VEC_OR macro 2015-06-26 16:00:50 +02:00
qemu-io.h qemu-io: Use BlockBackend 2015-02-16 15:07:19 +00:00
qjson.h QJSON: Add JSON writer 2015-02-05 17:16:14 +01:00
trace-tcg.h
trace.h trace: [tcg] Include event definitions in "trace.h" 2014-08-12 14:26:12 +01:00