qemu/stubs
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
..
arch-query-cpu-def.c qerror: Clean up QERR_ macros to expand into a single string 2015-06-22 18:20:40 +02:00
bdrv-commit-all.c libqemustub: add stubs to be able to use qemu-char.c 2014-06-19 18:44:18 +03:00
chr-baum-init.c libqemustub: add more stubs for qemu-char 2014-06-23 17:37:59 +03:00
chr-msmouse.c libqemustub: add stubs to be able to use qemu-char.c 2014-06-19 18:44:18 +03:00
chr-testdev.c backends: Introduce chr-testdev 2014-08-06 17:53:05 +02:00
clock-warp.c aio / timers: Rearrange timer.h & make legacy functions call non-legacy 2013-08-22 19:14:24 +02:00
cpu-get-clock.c
cpu-get-icount.c
cpus.c cpu: Change qemu_init_vcpu() argument to CPUState 2013-06-28 13:25:13 +02:00
dump.c Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
fd-register.c
fdset-add-fd.c
fdset-find-fd.c
fdset-get-fd.c
fdset-remove-fd.c monitor: fix use after free 2014-08-18 14:39:10 -04:00
gdbstub.c stubs: Optimize dependencies for gdbstub.c 2014-03-02 17:13:31 +04:00
get-fd.c
get-next-serial.c libqemustub: add stubs to be able to use qemu-char.c 2014-06-19 18:44:18 +03:00
get-vm-name.c
iothread-lock.c main-loop: introduce qemu_mutex_iothread_locked 2015-07-01 15:45:50 +02:00
is-daemonized.c Add qtest for vhost-user 2014-06-19 18:44:18 +03:00
kvm.c kvm: Introduce kvm_arch_irqchip_create 2014-02-26 17:20:00 +00:00
machine-init-done.c libqemustub: add stubs to be able to use qemu-char.c 2014-06-19 18:44:18 +03:00
Makefile.objs qerror: Finally unused, clean up 2015-06-22 18:20:40 +02:00
migr-blocker.c
mon-is-qmp.c qerror: Finally unused, clean up 2015-06-22 18:20:40 +02:00
mon-printf.c
monitor-init.c libqemustub: add stubs to be able to use qemu-char.c 2014-06-19 18:44:18 +03:00
notify-event.c libqemustub: add stubs to be able to use qemu-char.c 2014-06-19 18:44:18 +03:00
qemu-chr-open-spice.c libqemustub: add more stubs for qemu-char 2014-06-23 17:37:59 +03:00
qmp_pc_dimm_device_list.c pc-dimm: add a function to calculate VM's current RAM size 2015-03-04 13:00:04 -05:00
qtest.c stubs: Fix warning caused by missing include statement 2015-02-10 10:26:05 +03:00
reset.c
runstate-check.c blockdev: Refuse to open encrypted image unless paused 2014-03-14 16:24:42 +01:00
set-fd-handler.c iohandler: Change return type of qemu_set_fd_handler to "void" 2015-06-12 13:26:21 +01:00
slirp.c slirp: set mainloop timeout with more precise value 2013-09-17 12:26:05 +02:00
sysbus.c
uuid.c scsi: prefer UUID to VM name for the initiator name 2013-09-12 08:46:21 +02:00
vc-init.c console: move chardev declarations to sysemu/char.h 2014-06-23 10:56:20 +01:00
vm-stop.c block: asynchronously stop the VM on I/O errors 2014-06-23 16:36:13 +08:00
vmstate.c stubs: Add a vmstate_dummy struct for CONFIG_USER_ONLY 2013-03-12 10:35:54 +01:00