* Philippe Mathieu-Daudé (philmd@linaro.org) 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é <philmd@linaro.org>
Reviewed-by: Dr. David Alan Gilbert <dave@treblig.org>
> ---
> 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 |_______/