qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 3/9] qom: Implement qom-set HMP command


From: Gonglei
Subject: Re: [Qemu-devel] [PATCH v2 3/9] qom: Implement qom-set HMP command
Date: Fri, 13 Mar 2015 09:34:10 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

On 2015/3/13 0:43, Andreas Färber wrote:
> Re-implemented based on qmp_qom_set() to facilitate argument parsing.
> 
> Warn about ambiguous path arguments.
> 
> Signed-off-by: Andreas Färber <address@hidden>
> ---
>  hmp-commands.hx | 13 +++++++++++++
>  hmp.c           | 21 +++++++++++++++++++++
>  hmp.h           |  1 +
>  3 files changed, 35 insertions(+)
> 
>
Reviewed-by: Gonglei <address@hidden>

> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index c3b93d6..1a6cd3e 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -1671,6 +1671,19 @@ Print QOM properties of object at location @var{path}
>  ETEXI
>  
>      {
> +        .name       = "qom-set",
> +        .args_type  = "path:s,property:s,value:s",
> +        .params     = "path property value",
> +        .help       = "set QOM property",
> +        .mhandler.cmd  = hmp_qom_set,
> +    },
> +
> +STEXI
> address@hidden qom-set @var{path} @var{property} @var{value}
> +Set QOM property @var{property} of object at location @var{path} to value 
> @var{value}
> +ETEXI
> +
> +    {
>          .name       = "info",
>          .args_type  = "item:s?",
>          .params     = "[subcommand]",
> diff --git a/hmp.c b/hmp.c
> index f6df075..811f9a3 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -1878,3 +1878,24 @@ void hmp_qom_list(Monitor *mon, const QDict *qdict)
>      }
>      hmp_handle_error(mon, &err);
>  }
> +
> +void hmp_qom_set(Monitor *mon, const QDict *qdict)
> +{
> +    const char *path = qdict_get_str(qdict, "path");
> +    const char *property = qdict_get_str(qdict, "property");
> +    const char *value = qdict_get_str(qdict, "value");
> +    Error *err = NULL;
> +    bool ambiguous = false;
> +    Object *obj;
> +
> +    obj = object_resolve_path(path, &ambiguous);
> +    if (obj == NULL) {
> +        error_set(&err, QERR_DEVICE_NOT_FOUND, path);
> +    } else {
> +        if (ambiguous) {
> +            monitor_printf(mon, "Warning: Path '%s' is ambiguous\n", path);
> +        }
> +        object_property_parse(obj, value, property, &err);
> +    }
> +    hmp_handle_error(mon, &err);
> +}
> diff --git a/hmp.h b/hmp.h
> index 18c0f52..44049e8 100644
> --- a/hmp.h
> +++ b/hmp.h
> @@ -96,6 +96,7 @@ void hmp_object_del(Monitor *mon, const QDict *qdict);
>  void hmp_info_memdev(Monitor *mon, const QDict *qdict);
>  void hmp_info_memory_devices(Monitor *mon, const QDict *qdict);
>  void hmp_qom_list(Monitor *mon, const QDict *qdict);
> +void hmp_qom_set(Monitor *mon, const QDict *qdict);
>  void object_add_completion(ReadLineState *rs, int nb_args, const char *str);
>  void object_del_completion(ReadLineState *rs, int nb_args, const char *str);
>  void device_add_completion(ReadLineState *rs, int nb_args, const char *str);
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]