* Philippe Mathieu-Daudé ([email protected]) wrote:
> The following methods don't use target-specific code anymore:
> - hmp_compare_cmd()
> - monitor_register_hmp()
> - monitor_register_hmp_info_hrt()
> Move them to hmp.c which is target-agnostic, being built once.
> 
> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>

Reviewed-by: Dr. David Alan Gilbert <[email protected]>

> ---
>  monitor/hmp-target.c | 57 --------------------------------------------
>  monitor/hmp.c        | 55 ++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 55 insertions(+), 57 deletions(-)
> 
> diff --git a/monitor/hmp-target.c b/monitor/hmp-target.c
> index 59c60d13b52..420969bd6eb 100644
> --- a/monitor/hmp-target.c
> +++ b/monitor/hmp-target.c
> @@ -33,8 +33,6 @@
>  #include "qapi/qapi-commands-control.h"
>  #include "qapi/qapi-commands-misc.h"
>  #include "qapi/qapi-commands-machine.h"
> -#include "qapi/error.h"
> -#include "qemu/cutils.h"
>  
>  #if defined(TARGET_S390X)
>  #include "hw/s390x/storage-keys.h"
> @@ -44,29 +42,6 @@
>  /* Make devices configuration available for use in hmp-commands*.hx 
> templates */
>  #include CONFIG_DEVICES
>  
> -/**
> - * Is @name in the '|' separated list of names @list?
> - */
> -int hmp_compare_cmd(const char *name, const char *list)
> -{
> -    const char *p, *pstart;
> -    int len;
> -    len = strlen(name);
> -    p = list;
> -    for (;;) {
> -        pstart = p;
> -        p = qemu_strchrnul(p, '|');
> -        if ((p - pstart) == len && !memcmp(pstart, name, len)) {
> -            return 1;
> -        }
> -        if (*p == '\0') {
> -            break;
> -        }
> -        p++;
> -    }
> -    return 0;
> -}
> -
>  /* Please update hmp-commands.hx when adding or changing commands */
>  static HMPCommand hmp_info_cmds[] = {
>  #include "hmp-commands-info.h"
> @@ -147,35 +122,3 @@ static void __attribute__((__constructor__)) 
> sortcmdlist(void)
>            sizeof(*hmp_info_cmds),
>            compare_mon_cmd);
>  }
> -
> -void monitor_register_hmp(const char *name, bool info,
> -                          void (*cmd)(Monitor *mon, const QDict *qdict))
> -{
> -    HMPCommand *table = hmp_cmds_for_target(info);
> -
> -    while (table->name != NULL) {
> -        if (strcmp(table->name, name) == 0) {
> -            g_assert(table->cmd == NULL && table->cmd_info_hrt == NULL);
> -            table->cmd = cmd;
> -            return;
> -        }
> -        table++;
> -    }
> -    g_assert_not_reached();
> -}
> -
> -void monitor_register_hmp_info_hrt(const char *name,
> -                                   HumanReadableText *(*handler)(Error 
> **errp))
> -{
> -    HMPCommand *table = hmp_cmds_for_target(true);
> -
> -    while (table->name != NULL) {
> -        if (strcmp(table->name, name) == 0) {
> -            g_assert(table->cmd == NULL && table->cmd_info_hrt == NULL);
> -            table->cmd_info_hrt = handler;
> -            return;
> -        }
> -        table++;
> -    }
> -    g_assert_not_reached();
> -}
> diff --git a/monitor/hmp.c b/monitor/hmp.c
> index 17e5756986f..0a5bbf82197 100644
> --- a/monitor/hmp.c
> +++ b/monitor/hmp.c
> @@ -1497,3 +1497,58 @@ void monitor_init_hmp(Chardev *chr, bool use_readline, 
> Error **errp)
>                               monitor_event, NULL, &mon->common, NULL, true);
>      monitor_list_append(&mon->common);
>  }
> +
> +/**
> + * Is @name in the '|' separated list of names @list?
> + */
> +int hmp_compare_cmd(const char *name, const char *list)
> +{
> +    const char *p, *pstart;
> +    int len;
> +    len = strlen(name);
> +    p = list;
> +    for (;;) {
> +        pstart = p;
> +        p = qemu_strchrnul(p, '|');
> +        if ((p - pstart) == len && !memcmp(pstart, name, len)) {
> +            return 1;
> +        }
> +        if (*p == '\0') {
> +            break;
> +        }
> +        p++;
> +    }
> +    return 0;
> +}
> +
> +void monitor_register_hmp(const char *name, bool info,
> +                          void (*cmd)(Monitor *mon, const QDict *qdict))
> +{
> +    HMPCommand *table = hmp_cmds_for_target(info);
> +
> +    while (table->name != NULL) {
> +        if (strcmp(table->name, name) == 0) {
> +            g_assert(table->cmd == NULL && table->cmd_info_hrt == NULL);
> +            table->cmd = cmd;
> +            return;
> +        }
> +        table++;
> +    }
> +    g_assert_not_reached();
> +}
> +
> +void monitor_register_hmp_info_hrt(const char *name,
> +                                   HumanReadableText *(*handler)(Error 
> **errp))
> +{
> +    HMPCommand *table = hmp_cmds_for_target(true);
> +
> +    while (table->name != NULL) {
> +        if (strcmp(table->name, name) == 0) {
> +            g_assert(table->cmd == NULL && table->cmd_info_hrt == NULL);
> +            table->cmd_info_hrt = handler;
> +            return;
> +        }
> +        table++;
> +    }
> +    g_assert_not_reached();
> +}
> -- 
> 2.52.0
> 
-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    |       Running GNU/Linux       | Happy  \ 
\        dave @ treblig.org |                               | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/

Reply via email to