Introduce QList
QList is a high-level data type that can be used to store QObjectsin a singly-linked list.
The following functions are available:
- qlist_new() Create a new QList- qlist_append() Append a QObject to the list- qlist_iter() Iterate over stored QObjects...
Introduce QList unit-tests
This suite contains tests to assure that QList API works as expected.
To execute it you should have check installed and build QEMU withcheck support enabled (--enable-check-utests) and then run:
$ ./check-qlist
Patchworks-ID: 35333...
monitor: Convert mon_cmd_t initializations to C99 style
Patchworks-ID: 35335Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
monitor: union for info handlers
This commit adds a union to mon_cmd_t for info handlers andconverts do_info() and info_cmds[] array to use it.
This improves type safety.
Next commit will convert command handlers.
Patchworks-ID: 35336Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>...
monitor: union for command handlers
This commits adds a new union member to mon_cmd_t for commandhandlers and convert monitor_handle_command() and qemu-monitor.hxto use it.
Patchworks-ID: 35337Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>...
monitor: Add user_print() to mon_cmd_t
This new struct member will store a pointer to a function thatshould be used to output data in the user protocol format.
It will also serve as a flag to say if a given handler has alreadybeen converted to the new QObject style....
monitor: Handle new and old style handlers
This commit changes monitor_handle_command() to support old styleand new style handlers.
New style handlers are protocol independent, they return theirdata to the Monitor, which in turn decides how to print them...
Only compile sd0323 when one target uses it
Patchworks-ID: 35217Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile ads7846 when one target uses it
Patchworks-ID: 35218Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile max111x when one target uses it
Patchworks-ID: 35219Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile ssi-sd when one target uses it
Patchworks-ID: 35220Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile ssi when one target uses it
Patchworks-ID: 35221Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
QObject: Accept NULL
It is convenient that QDECREF and QINCREF accept the QObjectparameter to be NULL, so that we don't duplicate 'if' tests inthe callers.
Patchworks-ID: 35332Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile tmp105 when one target uses it
Patchworks-ID: 35214Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile stellaris_input when one target uses it
Patchworks-ID: 35213Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile sd0303 when one target uses it
Patchworks-ID: 35216Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile twl92230 when one target uses it
Patchworks-ID: 35212Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile tsc2005 when one target uses it
Patchworks-ID: 35215Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile lm832x when one target uses it
Patchworks-ID: 35211Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile wm8750 when one target uses it
Patchworks-ID: 35209Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile ptimer when one target uses it
Patchworks-ID: 35207Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile sd when one target uses it
Patchworks-ID: 35208Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile max7310 when one target uses it
Patchworks-ID: 35210Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile ecc when one target uses it
Patchworks-ID: 35203Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile esp when one target uses it
Patchworks-ID: 35206Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile escc when one target uses it
Patchworks-ID: 35205Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile m48t59 when one target uses it
Patchworks-ID: 35204Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Generate gdbstub-xml.c only when needed
First user of new config-devices.mak
Patchworks-ID: 35198Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile usb_ohci when one target uses it
Patchworks-ID: 35199Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile isa_mmio when one target uses it
Patchworks-ID: 35200Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile qdev_addr when one target uses it
Patchworks-ID: 35201Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Only compile nand when one target uses it
Patchworks-ID: 35202Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Add new config-devices.mak for each target
We generate config-devices.h from there automatically.We need to do it in main Makefile, because we are going to need a mainMakefile for them.
Patchworks-ID: 35196Signed-off-by: Juan Quintela <quintela@redhat.com>...
Generate config-devices.h
Generate config-devices.h for each target and config-all-devices.h forcommon library. We don't want to name both config-devices.h to avoidpath problems
Patchworks-ID: 35195Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Move generation of config-target.h to Makefile from configure
Patchworks-ID: 35194Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Move generation of config-host.h to Makefile from configure
Use timestamp based appreach to avoid not needed recompilation.Add it to rules.mak
Many thanks to Paolo Bonzini for helpding the design, and the debug.
Patchworks-ID: 35190Signed-off-by: Juan Quintela <quintela@redhat.com>...
Remove useless check for config-host.mak
If config-host.mak dont' exist, we have exited in the check atthe beginning of the file.Once here, move the bits to the else part of the test at the beginning ofthe file.
Patchworks-ID: 35191Signed-off-by: Juan Quintela <quintela@redhat.com>...
Rename config.{h, mak} config-target.{h, mak}
Add config.h file that includes config-target.h and config-host.h
Patchworks-ID: 35193Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Don't include config-host.mak from inside config.mak
Include it directly in Makefile.target
Patchworks-ID: 35189Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
CRIS: Update PR_EDA on TLB faults.
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Warn if value of qdev_init() isn't checked
After qdev_init() fails, the device is gone. Failure to check runs ahigh risk of use-after-free.
Patchworks-ID: 35166Signed-off-by: Markus Armbruster <armbru@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Clean up test for qdev_init() failure
Some callers test for != 0, some for < 0. Normalize to < 0.
Patchworks-ID: 35171Signed-off-by: Markus Armbruster <armbru@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Check return value of qdev_init()
But do so only where it may actually fail. Leave the rest for thenext commit.
Patchworks-ID: 35167Signed-off-by: Markus Armbruster <armbru@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
New qdev_init_nofail()
Like qdev_init(), but terminate program via hw_error() instead ofreturning an error value.
Use it instead of qdev_init() where terminating the program on failureis okay, either because it's during machine construction, or because...
Make isa_create() terminate program on failure
Callers don't check the return value anyway.
Patchworks-ID: 35172Signed-off-by: Markus Armbruster <armbru@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Make qdev_init() destroy the device on failure
Before, every caller had to do this. Only two actually did.
Patchworks-ID: 35170Signed-off-by: Markus Armbruster <armbru@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Unbreak USB autoconnect filters
Commit 22f84e73 added a qdev_init() missing on the path throughusb_host_device_open(), but that broke the path throughusb_host_auto_scan(), which already had one. Remove that one.
Patchworks-ID: 35169Signed-off-by: Markus Armbruster <armbru@redhat.com>...
tcg: improve output log
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
target-i386: fix ARPL
The arpl implementation in target-i386/translate.c uses cpu_A0temporary across a brcond op. This patch fixes that issue.
Signed-off-by: Laurent Desnogues <laurent.desnogues@gmail.com>Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
configure and Makefile are not generated in qemu
Just say it to make
Signed-off-by: Juan Quintela <quintela@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
qdev: move comment
Move comment back next to main_system_bus to avoid confusion.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
AIOLIBS is not used anywhere
optionrom: remove use of implicit RM variable
add build-all to .PHONY rules
optionrom: create .PHONY variable
Don't use implicit rules for Makefile
This remove implicit rules + implicit variables.Explicit rules like the generation of %.h and %.c from %.hx still worksas expected.
As an added bonus, now the output of make -d is readable.
As another added bonus, time spend on Makefiles is way smaller....
Port host_net_add monitor command to QemuOpts
Here is where we rely on qemu_opts_parse() to handle an empty string.We could alternatively explicitly handle this here by usingqemu_opts_create() when we're not supplied any parameters, but itscleaner this way....
Port usb net to QemuOpts
We need net_client_init_from_opts() exported for this
Signed-off-by: Mark McLoughlin <markmc@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Port PCI NIC hotplug to QemuOpts
Final net cleanup after conversion to QemuOpts
Now that net_client_init() has no users, kill it off and renamenet_client_init_from_opts().
There is no further need for the old code in net_client_parse() either.We use qemu_opts_parse() 'firstname' facitity for that. Instead, move...
qemu/pci: clarify pci config load routine
PCI load routine has to be called with size equal to 256 (otherwise itwill crash in weird ways). So assert this, making code clearer.Also avoid dynamically sized array on stack - good for portability.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>...
qemu/pci: make pci not depend on msix
Making pci device cleanup msix automatically makes pci.c depend onmsix.c, which is IMO messy. Since devices do msix_init it's easy andnatural for them to also do msix_uninit.
Port -net none and -net nic to QemuOpts
We use a table of network types to look up the initialization functionand parameter descriptions in net_client_init().
For now, we use QemuOpts for the 'none' and 'nic' types. Subsequentpatches port the other types too and the special casing is removed....
Port -net user to QemuOpts
The handling of guestfwd and hostfwd requires the previous changesto allow multiple values for each parameter. The only way to accessthose multiple values is to use qemu_opt_foreach().
Signed-off-by: Mark McLoughlin <markmc@redhat.com>...
Port -net tap to QemuOpts
Some parameters are not valid with fd=. Rather than having a separateparameter description table for validating fd=, it's easir to justcheck for those invalid parameters later.
Note, the need to possible lookup a file descriptor name from the...
Port -net socket to QemuOpts
Port -net vde to QemuOpts
The net_vde_init() change is needed because we now pass NULL pointersinstead of empty strings for group/sock if they're not set.
Port -net dump to QemuOpts
Note, not incrementing nb_host_devs in net_init_dump() is intentional.
Clean up legacy code in net_client_init()
Now that we've ported everything over to QemuOpts, we can kill offall the cruft in net_client_init().
Note, the 'channel' type requires special handling as it uses aformat that QemuOpts can't parse
Drop config_error(), use qemu_error() instead
Diagnostic output goes to stderr, except when we're in a monitorcommand, when it goes to the monitor instead.
config_error() implements this with a monitor argument: if it'snon-null, report there, else to stderr. This obliges us to pass the...
Remove bogus error message from qemu_opts_set()
The only way qemu_opts_create() can fail is if a QemuOpts with that idalready exists and fail_if_exists=1. In that case, we already printan error which makes more sense than the one in qemu_opts_set().
Remove double error message in qemu_option_set()
qemu_opt_set() prints an error message in all failure cases, soqemu_set_option() doesn't need to print another error.
Remove double error message for -device option parsing
qemu_opts_parse() gives a suitable error message in all failure casesso we can remove the error message from the caller.
Make qemu_opts_parse() handle empty strings
Rather than making callers explicitly handle empty strings by usingqemu_opts_create(), we can easily have qemu_opts_parse() handleempty parameter strings.
Add qemu_opts_validate() for post parsing validation
Several qemu command line options have a parameter whose value affectswhat other parameters are accepted for the option.
In these cases, we can have an empty description table in theQemuOptsList and once the option has been parsed we can use a suitable...
Never overwrite a QemuOpt
Rather than overwriting a QemuOpt, just add a new one to the tail andalways do a reverse search for parameters to preserve the samebehaviour. We use this order so that foreach() iterates over the optsin their original order....
Add qemu_net_opts
The first step in porting -net to QemuOpts. We do not include parameterdescriptions in the QemuOptsList because we use the first parameter tochoose which descriptions validate against.
Use qemu_strdup() for NICInfo string fields
Don't assign a static string to NICInfo::model
Make NICInfo string fields non-const
We now only assign strdup()ed strings to these fields, never staticstrings.
aliguori: fix build for ppc_prep and mips_jazz
Move memset() from net_client_uninit() to net_client_init()
zeroing a structure before using it is more common than zeroing afterusing it. Also makes the setting of nd->used more obvious.
Use qemu_strdup() for VLANClientState string fields
Make net_client_init() consume slirp_configs even on error
net_slirp_init() walks slirp_configs, and stops when it encounters onethat doesn't work. Instead of consuming slirp_configs members there,consume them in the sole caller. This makes sure all are consumed....
Don't exit() in config_error()
Propagating errors up the call chain is tedious. In startup code, wecan take a shortcut: terminate the program. This is wrong elsewhere,the monitor in particular.
config_error() tries to cater for both customers: it terminates the...
add host_device format description to qemu-img manpage
Converting files using "qemu-img convert" onto logical volumes (or anyblock device) you need to use the currently undocumented "host_device" format. This patch adds the required documentation to the manpage....
offer right-ctrl as a grab option
Add support for -ctrl-grab to use the right-ctrl button to grab/releasethe mouse in SDL.
The multi-button ctrl-alt and ctrl-alt-shift grab buttons present anaccessibility problem to users who cannot press more than one button...
Revert "Fix exit on 'pci_add' Monitor command"
This reverts commit 0148fde54c2478ea8a47c8dbfe4c0fb8bda4d996.
As requested by Luiz.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Register rtc options for -set
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>Signed-off-by: Mark McLoughlin <markmc@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
eepro100: support 16 bit read from SCBCmd (== 2)
This is necessary to support OpenBSD 4.2 install, withoutthis change it triggers an assert.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Reorganize option rom (+linux kernel) loading.
This patch adds infrastructure to maintain memory regions which must berestored on reset. That includes roms (vga bios and option roms on pc),but is also used when loading linux kernels directly. Features:...
target-i386: move recently added vmstate fields at the end of the structure
This reduce the impact on hosts that have addressing modes with limitedoffsets. Suggested by Laurent Desnogues.
block/raw: Add create_options for host_device
Today host_devices have a create function, so they also need a create_optionsfield to prevent qemu-img from complaining.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Improve error reporting on file access
By making the error reporting include strerror(errno), it gives the usera bit more indication as to why qemu failed. This is particularlyimportant for people running qemu as a non root user.
Signed-off-by: Justin M. Forbes <jforbes@redhat.com>...
x86: fix miss merge
There was a missmerge, and then we got a tail recursive call to cpu_post_loadwithout case base :)
Win32: Fix vnc support.
Without this patch, qemu on windows crashes as soonas a vnc client connects.
Signed-off-by: Stefan Weil <weil@mail.berlios.de>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Fix pci_add storage not to exit on bad first argument
Monitor command "pci_add ADDR storage ..." does its work inqemu_pci_hot_add_nic(). It called pci_create(..., ADDR) to create thedevice. That's wrong, because pci_create() terminates the programwhen ADDR is invalid....
Make it obvious that pci_nic_init() can't fail
Before this patch, pci_nic_init() returns NULL when it can't find themodel in pci_nic_models[]. Except this can't happen, becauseqemu_check_nic_model_list() just searched for model inpci_nic_models[], and terminated the program on failure....
Fix pci_add nic not to exit on bad model
Monitor command "pci_add ADDR nic model=MODEL" uses pci_nic_init() tocreate the NIC. When MODEL is unknown or "?", this prints to stderrand terminates the program.
Change pci_nic_init() not to treat "?" specially, and to return NULL...
pci_create() is now unused, remove it
Signed-off-by: Markus Armbruster <armbru@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Rename pci_create_noinit() to pci_create()
It's qdev_create() specialized for PCI, so name it accordingly.