[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC 48/48] monitor: convert do_device_add() to Q
From: |
Luiz Capitulino |
Subject: |
Re: [Qemu-devel] [PATCH RFC 48/48] monitor: convert do_device_add() to QObject |
Date: |
Fri, 26 Feb 2010 16:47:25 -0300 |
On Wed, 24 Feb 2010 18:56:00 +0100
Markus Armbruster <address@hidden> wrote:
>
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
> hw/qdev.c | 29 +++++++++++++++++++++--------
> hw/qdev.h | 2 +-
> qemu-monitor.hx | 3 ++-
> 3 files changed, 24 insertions(+), 10 deletions(-)
>
> diff --git a/hw/qdev.c b/hw/qdev.c
> index bcd989c..a631492 100644
> --- a/hw/qdev.c
> +++ b/hw/qdev.c
> @@ -586,7 +586,9 @@ static BusState *qbus_find(const char *path)
> dev = qbus_find_dev(bus, elem);
> if (!dev) {
> qemu_error_new(QERR_DEVICE_NOT_FOUND, elem);
> - qbus_list_dev(bus);
> + if (!in_qmp_mon()) {
> + qbus_list_dev(bus);
> + }
> return NULL;
> }
>
> @@ -605,7 +607,9 @@ static BusState *qbus_find(const char *path)
> return QLIST_FIRST(&dev->child_bus);
> default:
> qemu_error_new(QERR_DEVICE_MULTIPLE_BUSSES, elem);
> - qbus_list_bus(dev);
> + if (!in_qmp_mon()) {
> + qbus_list_bus(dev);
> + }
> return NULL;
> }
> }
> @@ -619,7 +623,9 @@ static BusState *qbus_find(const char *path)
> bus = qbus_find_bus(dev, elem);
> if (!bus) {
> qemu_error_new(QERR_BUS_NOT_FOUND, elem);
> - qbus_list_bus(dev);
> + if (!in_qmp_mon()) {
> + qbus_list_bus(dev);
> + }
> return NULL;
> }
> }
> @@ -762,16 +768,23 @@ void do_info_qdm(Monitor *mon)
> }
> }
>
> -void do_device_add(Monitor *mon, const QDict *qdict)
> +int do_device_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
> {
> QemuOpts *opts;
>
> opts = qemu_opts_from_qdict(&qemu_device_opts, qdict);
> - if (opts) {
> - if (qdev_device_help(opts) || qdev_device_add(opts) == NULL) {
> - qemu_opts_del(opts);
> - }
> + if (!opts) {
> + return -1;
> }
> + if (!in_qmp_mon() && qdev_device_help(opts)) {
> + qemu_opts_del(opts);
> + return 0;
> + }
> + if (!qdev_device_add(opts)) {
> + qemu_opts_del(opts);
> + return -1;
> + }
> + return 0;
> }
We need at least basic documentation of the accepted parameters and
an example, just like all others QMP-enabled handlers.
>
> void do_device_del(Monitor *mon, const QDict *qdict)
> diff --git a/hw/qdev.h b/hw/qdev.h
> index 0eb45b0..c86a59d 100644
> --- a/hw/qdev.h
> +++ b/hw/qdev.h
> @@ -171,7 +171,7 @@ void qbus_free(BusState *bus);
>
> void do_info_qtree(Monitor *mon);
> void do_info_qdm(Monitor *mon);
> -void do_device_add(Monitor *mon, const QDict *qdict);
> +int do_device_add(Monitor *mon, const QDict *qdict, QObject **ret_data);
> void do_device_del(Monitor *mon, const QDict *qdict);
>
> /*** qdev-properties.c ***/
> diff --git a/qemu-monitor.hx b/qemu-monitor.hx
> index 641a8ef..e67ab20 100644
> --- a/qemu-monitor.hx
> +++ b/qemu-monitor.hx
> @@ -573,7 +573,8 @@ ETEXI
> .args_type = "device:O",
> .params = "driver[,prop=value],[,...]",
> .help = "add device, like -device on the command line",
> - .mhandler.cmd = do_device_add,
> + .user_print = monitor_user_noop,
> + .mhandler.cmd_new = do_device_add,
> },
>
> STEXI
- [Qemu-devel] [PATCH RFC 25/48] qdev: Hide "ptr" properties from users, (continued)
- [Qemu-devel] [PATCH RFC 25/48] qdev: Hide "ptr" properties from users, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 46/48] monitor: New argument type 'O', Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 43/48] qemu-option: Functions to convert to/from QDict., Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 30/48] qdev: Relax parsing of bus option, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 13/48] error: Make qemu_error() add a newline, strip it from arguments, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 26/48] error: Polish human-readable error descriptions, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 42/48] error: Convert do_device_add() to QError, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 48/48] monitor: convert do_device_add() to QObject, Markus Armbruster, 2010/02/24
- Re: [Qemu-devel] [PATCH RFC 48/48] monitor: convert do_device_add() to QObject,
Luiz Capitulino <=
- [Qemu-devel] [PATCH RFC 18/48] error: Include the program name in error messages to stderr, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 35/48] monitor: New in_qmp_mon(), Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 38/48] error: New QERR_BUS_NO_HOTPLUG, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 11/48] error: Move qemu_error & friends into their own header, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 09/48] block: Simplify usb_msd_initfn() test for "can read bdrv key", Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 06/48] pc: Factor common code out of pc_boot_set() and cmos_init(), Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 08/48] monitor: Separate "default monitor" and "current monitor" cleanly, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 15/48] error: Don't abuse qemu_error() for non-error in qdev_device_help(), Markus Armbruster, 2010/02/24