QEMU With E2K User Support
Go to file
Adam Litke 940cc30d0d New API for asynchronous monitor commands
Qemu has a number of commands that can operate asynchronously (savevm, migrate,
etc) and it will be getting more.  For these commands, the user monitor needs
to be suspended, but QMP monitors could continue to to accept other commands.
This patch introduces a new command API that isolates the details of handling
different monitor types from the actual command execution.

A monitor command can use this API by implementing the mhandler.cmd_async
handler (or info_async if appropriate).  This function is responsible for
submitting the command and does not return any data although it may raise
errors.  When the command completes, the QMPCompletion callback should be
invoked with its opaque data and the command result.

The process for submitting and completing an asynchronous command is different
for QMP and user monitors.  A user monitor must be suspended at submit time and
resumed at completion time.  The user_print() function must be passed to the
QMPCompletion callback so the result can be displayed properly.  QMP monitors
are simpler.  No submit time setup is required.  When the command completes,
monitor_protocol_emitter() writes the result in JSON format.

This API can also be used to implement synchronous commands.  In this case, the
cmd_async handler should immediately call the QMPCompletion callback.  It is my
hope that this new interface will work for all commands, leading to a
drastically simplified monitor.c once all commands are ported.

Signed-off-by: Adam Litke <agl@us.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2010-01-26 17:08:03 -06:00
audio audio: include more information into audio_bug's output 2010-01-17 02:03:30 +03:00
block block/raw-posix: Abort on pread beyond end of non-growable file 2010-01-26 16:41:07 -06:00
bsd-user user: move CPU reset call to main.c for x86/PPC/Sparc 2009-11-07 10:37:06 +00:00
darwin-user PPC: Make DCR uint32_t 2009-12-21 16:03:03 +01:00
default-configs Add support for S390x system emulation 2009-12-05 17:36:05 +01:00
docs docs: New qdev-device-use.txt 2010-01-13 17:14:16 -06:00
fpu target-alpha: Fixes for alpha-linux syscalls. 2009-12-13 20:32:36 +01:00
gdb-xml
hw win32: pair qemu_memalign() with qemu_vfree() 2010-01-26 16:41:06 -06:00
linux-user mmap_frag() users only check for -1 error 2010-01-26 14:59:20 -06:00
net net/slirp.c: fix warning with _FORTIFY_SOURCE 2010-01-26 14:59:20 -06:00
pc-bios Sparc32: Update OpenBIOS image to r666 2010-01-17 20:36:13 +00:00
QMP QMP: Introduce VNC_INITIALIZED event 2010-01-19 16:31:04 -06:00
roms virtio-console: Automatically use virtio-serial-bus for the older -virtioconsole invocation 2010-01-26 15:42:02 -06:00
slirp Qemu's internal TFTP server breaks lock-step-iness of TFTP 2010-01-13 17:14:16 -06:00
target-alpha kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-arm kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-cris kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-i386 kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-m68k kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-microblaze kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-mips kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-ppc kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-s390x kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-sh4 kill regs_to_env and env_to_regs 2010-01-19 16:31:02 -06:00
target-sparc sparc32 fix np dereference in do_unassigned_access 2010-01-23 08:11:06 +00:00
tcg tcg/x86_64: Avoid unnecessary REX.B prefixes. 2010-01-15 07:32:56 +01:00
tests Use vpath directive 2010-01-08 09:58:40 -06:00
.gitignore linuxboot.bin is a generated file 2009-12-23 23:47:12 +01:00
.gitmodules Switch pc bios from pc-bios to seabios 2009-10-30 09:42:36 -05:00
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c Add qemu_aio_process_queue() 2009-10-27 12:28:59 -05:00
alpha-dis.c
alpha.ld
arm-dis.c
arm-semi.c
arm.ld
async.c Introduce contexts for asynchronous callbacks 2009-10-27 12:28:59 -05:00
balloon.h
block_int.h block: Add bdrv_change_backing_file 2010-01-13 17:14:15 -06:00
block-migration.c block migration: Skip zero-sized disks 2009-12-03 11:45:39 -06:00
block-migration.h block migration: Report progress also via info migration 2009-12-03 10:48:53 -06:00
block.c block: avoid creating too large iovecs in multiwrite_merge 2010-01-26 17:08:03 -06:00
block.h block: kill BDRV_O_CREAT 2010-01-26 15:42:02 -06:00
bswap.h
bt-host.c
bt-host.h
bt-vhci.c
buffered_file.c Block live migration 2009-11-17 08:49:30 -06:00
buffered_file.h
cache-utils.c
cache-utils.h
Changelog Update version and changelog to sync with stable branch 2009-12-19 08:26:03 -06:00
check-qdict.c QDict: Fix size update 2009-12-18 11:26:27 -06:00
check-qfloat.c Add unit test for QFloat 2009-11-17 08:49:38 -06:00
check-qint.c
check-qjson.c Add test suite for json marshalling 2009-11-17 08:49:40 -06:00
check-qlist.c Introduce QList unit-tests 2009-10-08 21:17:18 -05:00
check-qstring.c utests: Add qstring_from_substr() unit-test 2009-12-03 09:41:19 -06:00
cmd.c Fix OpenBSD build of qemu-io 2009-11-21 09:06:46 +00:00
cmd.h
cocoa.m Cocoa: Use optimized drawing for the window 2010-01-07 10:57:34 +03:00
CODING_STYLE
config.h Makefile dependencies for device configs 2009-11-22 21:24:54 +00:00
configure Check availavility of -fstack-protector-all 2010-01-26 14:59:20 -06:00
console.c vc: colorize chardev title line with blue background. 2009-12-12 07:59:42 -06:00
console.h VNC: Convert do_info_vnc() to QObject 2009-12-12 07:59:49 -06:00
COPYING
COPYING.LIB
cpu-all.h cpu-all.h: fix cpu_get_real_ticks() #ifdef 2009-12-20 21:18:57 +01:00
cpu-common.h
cpu-defs.h Revert "kvm: x86: Save/restore exception_index" 2009-12-18 11:26:33 -06:00
cpu-exec.c avoid unreachable statement after break 2010-01-19 16:31:03 -06:00
create_config Configurable block format whitelist 2009-11-09 08:43:02 -06:00
cris-dis.c
curses_keys.h
curses.c
cutils.c
d3des.c
d3des.h
def-helper.h
device_tree.c
device_tree.h
dis-asm.h
disas.c sh4 disasm fixes 2009-11-14 01:19:12 +01:00
disas.h
dma-helpers.c
dma.h
dyngen-exec.h S/390 fake TCG implementation 2009-12-05 17:36:00 +01:00
elf.h
envlist.c
envlist.h
exec-all.h tcg: increase TCG_MAX_OP_SIZE to 192 2009-12-01 00:06:15 +00:00
exec.c win32: pair qemu_memalign() with qemu_vfree() 2010-01-26 16:41:06 -06:00
feature_to_c.sh
gdbstub.c target-m68k: fix a typo in 'P' packet processing 2010-01-14 20:00:23 +01:00
gdbstub.h
gen-icount.h target-arm: remove cpu_T for ARM once and for all 2009-10-17 23:52:18 +02:00
host-utils.c
host-utils.h target-alpha: Fix generic ctz64. 2009-12-17 18:12:04 +01:00
hostregs_helper.h
hpet.h
hppa-dis.c
hppa.ld
hxtool
i386-dis.c
i386.ld
ia64.ld
input.c move kbd/mouse handling to input.c 2010-01-13 17:14:14 -06:00
ioport-user.c
ioport.c
ioport.h
json-lexer.c Add a lexer for JSON 2009-11-17 08:49:39 -06:00
json-lexer.h Add a lexer for JSON 2009-11-17 08:49:39 -06:00
json-parser.c json-parser: remove dead increment 2010-01-13 17:14:15 -06:00
json-parser.h Add a JSON parser 2009-11-17 08:49:39 -06:00
json-streamer.c Add a JSON message boundary identifier 2009-11-17 08:49:39 -06:00
json-streamer.h Add a JSON message boundary identifier 2009-11-17 08:49:39 -06:00
keymaps.c
keymaps.h
kvm-all.c kvm: x86: Add support for VCPU event states 2009-12-03 15:25:57 -06:00
kvm.h kvm: x86: Add support for VCPU event states 2009-12-03 15:25:57 -06:00
libfdt_env.h
LICENSE
linux-aio.c linux-aio: Honour AsyncContext 2009-10-27 12:28:59 -05:00
m68k-dis.c
m68k-semi.c
m68k.ld
MAINTAINERS list MST as pci layer maintainer 2009-12-23 16:35:01 +02:00
Makefile Fix generation of config-host.h 2010-01-26 15:42:02 -06:00
Makefile.hw Use vpath directive 2010-01-08 09:58:40 -06:00
Makefile.objs virtio-console: Rename virtio-serial.c back to virtio-console.c 2010-01-26 15:42:02 -06:00
Makefile.target microblaze: The petalogix s3adsp board uses intel flashes 2010-01-24 17:15:05 +01:00
Makefile.user Use vpath directive 2010-01-08 09:58:40 -06:00
microblaze-dis.c microblaze: Update disasm to latest GPLv2 version. 2009-12-10 12:33:49 +01:00
migration-exec.c live migration: Propagate output monitor to callback handler 2009-12-03 10:48:53 -06:00
migration-fd.c live migration: Propagate output monitor to callback handler 2009-12-03 10:48:53 -06:00
migration-tcp.c Don't leak file descriptors 2009-12-03 11:45:50 -06:00
migration-unix.c Avoid permanently disabled QEMU monitor when UNIX migration fails 2009-12-18 11:26:26 -06:00
migration.c Revert "monitor: Convert do_migrate_set_speed() to QObject" 2009-12-19 08:26:03 -06:00
migration.h Revert "monitor: Convert do_migrate_set_speed() to QObject" 2009-12-19 08:26:03 -06:00
mips-dis.c
mips.ld
module.c
module.h
monitor.c New API for asynchronous monitor commands 2010-01-26 17:08:03 -06:00
monitor.h New API for asynchronous monitor commands 2010-01-26 17:08:03 -06:00
nbd.c
nbd.h
net-checksum.c
net.c default devices: network 2009-12-12 07:59:43 -06:00
net.h net: add API to disable/enable polling 2010-01-08 09:58:40 -06:00
osdep.c Tell users about out-of-memory errors 2010-01-26 16:28:46 -06:00
osdep.h qdev: move DO_UPCAST() into osdep.h 2009-12-03 09:41:29 -06:00
path.c path.c fix warning with _FORTIFY_SOURCE 2009-12-25 18:19:15 +00:00
pci-ids.txt
posix-aio-compat.c posix-aio-compat.c: fix warning with _FORTIFY_SOURCE 2010-01-26 14:59:19 -06:00
ppc64.ld
ppc-dis.c
ppc.ld
qbool.c Add a QBool type 2009-11-17 08:49:39 -06:00
qbool.h Add a QBool type 2009-11-17 08:49:39 -06:00
qdict-test-data.txt Introduce QDict test data file 2009-09-04 09:37:34 -05:00
qdict.c QDict: Introduce qdict_get_qdict() 2010-01-26 15:42:01 -06:00
qdict.h QDict: Introduce qdict_get_qdict() 2010-01-26 15:42:01 -06:00
qemu_socket.h net: Make inet_strfamily() public 2010-01-20 08:25:23 -06:00
qemu-aio.h Add qemu_aio_process_queue() 2009-10-27 12:28:59 -05:00
qemu-binfmt-conf.sh target-alpha: Add binfmt entry. 2009-12-13 20:32:36 +01:00
qemu-char.c char: Remove redundant qemu_chr_generic_open() call. 2010-01-19 16:31:03 -06:00
qemu-char.h char: Convert qemu_chr_info() to QObject 2009-12-12 07:59:49 -06:00
qemu-common.h block: avoid creating too large iovecs in multiwrite_merge 2010-01-26 17:08:03 -06:00
qemu-config.c rework -monitor handling, switch to QemuOpts 2009-12-12 07:59:43 -06:00
qemu-config.h defaults: update device_list[] 2009-12-18 11:26:27 -06:00
qemu-doc.texi ARM PBX-A9 memory map tweaks 2009-12-21 20:19:12 +00:00
qemu-img-cmds.hx qemu-img rebase 2010-01-13 17:14:15 -06:00
qemu-img.c Ask for read-write permissions when opening files 2010-01-26 15:42:01 -06:00
qemu-img.texi Documentation: Add options to image format descriptions 2009-11-09 08:43:12 -06:00
qemu-io.c block: kill BDRV_O_CREAT 2010-01-26 15:42:02 -06:00
qemu-lock.h
qemu-log.h
qemu-malloc.c Do not abort on qemu_malloc(0) in production builds 2009-12-12 07:59:37 -06:00
qemu-monitor.hx monitor: convert do_cpu_set() to QObject, QError 2010-01-26 14:55:11 -06:00
qemu-nbd.c win32: pair qemu_memalign() with qemu_vfree() 2010-01-26 16:41:06 -06:00
qemu-nbd.texi
qemu-objects.h Introduce qemu-objects.h header file 2009-12-12 07:59:45 -06:00
qemu-option.c QemuOpts: allow larger option values. 2009-12-12 07:59:45 -06:00
qemu-option.h
qemu-options.hx Documentation: Add missing texi description for command line options 2010-01-26 15:42:01 -06:00
qemu-queue.h Import a simple queue implementation from NetBSD 2009-12-03 10:48:52 -06:00
qemu-sockets.c net: inet_strfamily(): Better unknown family report 2010-01-20 08:25:23 -06:00
qemu-tech.texi
qemu-thread.c
qemu-thread.h
qemu-timer.h
qemu-tool.c QMP: Asynchronous events infrastructure 2009-12-03 09:41:23 -06:00
qemu.sasl
qerror.c QError: New QERR_INVALID_CPU_INDEX 2010-01-26 14:55:11 -06:00
qerror.h QError: New QERR_INVALID_CPU_INDEX 2010-01-26 14:55:11 -06:00
qfloat.c Add a QFloat datatype 2009-11-17 08:49:38 -06:00
qfloat.h Add a QFloat datatype 2009-11-17 08:49:38 -06:00
qint.c
qint.h
qjson.c json: escape u0000 .. u001F when outputting json 2010-01-26 14:54:59 -06:00
qjson.h QJSON: Introduce qobject_from_jsonv() 2009-12-03 09:41:18 -06:00
qlist.c Add operations to qlist to allow it to be used as a stack 2009-11-17 08:49:38 -06:00
qlist.h QList: Introduce QLIST_FOREACH_ENTRY() 2010-01-26 15:42:01 -06:00
qobject.h Introduce QError 2009-12-03 09:41:20 -06:00
qstring.c QString: Introduce qstring_from_substr() 2009-12-03 09:41:19 -06:00
qstring.h QString: Introduce qstring_from_substr() 2009-12-03 09:41:19 -06:00
readline.c
readline.h
README
rules.mak finish VPATH -> vpath translation 2010-01-08 16:55:03 -06:00
s390-dis.c
s390.ld
savevm.c fix savevm command without id or tag 2010-01-26 15:45:06 -06:00
sdl_keysym.h
sdl_zoom_template.h
sdl_zoom.c
sdl_zoom.h
sdl.c win32/sdl: Fix toggle full screen 2010-01-26 16:28:46 -06:00
sh4-dis.c sh4 disasm fixes 2009-11-14 01:19:12 +01:00
softmmu_defs.h
softmmu_exec.h
softmmu_header.h
softmmu_template.h
softmmu-semi.h
sparc64.ld
sparc-dis.c Sparc: comment out unused variable, spotted by clang 2010-01-13 18:54:54 +00:00
sparc.ld
sysemu.h virtio-console: qdev conversion, new virtio-serial-bus 2010-01-20 08:25:23 -06:00
targphys.h
tcg-runtime.c
texi2pod.pl
thunk.c
thunk.h
TODO
translate-all.c
uboot_image.h
usb-bsd.c qdev: Replace device names containing whitespace 2009-12-12 07:59:38 -06:00
usb-linux.c usb-linux.c: fix warning with _FORTIFY_SOURCE 2010-01-26 14:59:20 -06:00
usb-stub.c
VERSION Update version and changelog to sync with stable branch 2009-12-19 08:26:03 -06:00
vgafont.h
vl.c virtio-console: Automatically use virtio-serial-bus for the older -virtioconsole invocation 2010-01-26 15:42:02 -06:00
vnc_keysym.h
vnc-auth-sasl.c
vnc-auth-sasl.h
vnc-auth-vencrypt.c
vnc-auth-vencrypt.h
vnc-tls.c
vnc-tls.h
vnc.c vnc_refresh: calling vnc_update_client might free vs 2010-01-26 17:08:02 -06:00
vnc.h VNC: Cache client info at connection time 2010-01-19 16:31:03 -06:00
vnchextile.h vnc: Fix artifacts in hextile decoding 2010-01-07 07:55:34 -06:00
x86_64.ld
x_keymap.c
x_keymap.h

Read the documentation in qemu-doc.html.

Fabrice Bellard.