qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Marc-André Lureau" <marcandre.lureau@gmail.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Damien Hedde <damien.hedde@greensocs.com>,
	QEMU <qemu-devel@nongnu.org>, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [PATCH v6 01/25] qmp: constify QmpCommand and list
Date: Mon, 17 Feb 2020 12:47:40 +0100	[thread overview]
Message-ID: <CAJ+F1CJks+3y6Wh93w+tT6YyO3-iW9kDFNqzW96OyXJ-O+xdaA@mail.gmail.com> (raw)
In-Reply-To: <cc27aa10-c6e2-0de8-a55f-b9a8da67dde2@greensocs.com>

Hi Markus,

Can you review/queue this patch?

thanks

On Fri, Nov 8, 2019 at 5:52 PM Damien Hedde <damien.hedde@greensocs.com> wrote:
>
>
>
> On 11/8/19 4:00 PM, Marc-André Lureau wrote:
> > Since 0b69f6f72ce47a37a749b056b6d5ec64c61f11e8 "qapi: remove
> > qmp_unregister_command()", the command list can be declared const.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  include/qapi/qmp/dispatch.h | 9 +++++----
> >  monitor/misc.c              | 2 +-
> >  monitor/monitor-internal.h  | 2 +-
> >  qapi/qmp-dispatch.c         | 6 +++---
> >  qapi/qmp-registry.c         | 6 +++---
> >  qga/commands.c              | 2 +-
> >  qga/main.c                  | 6 +++---
> >  7 files changed, 17 insertions(+), 16 deletions(-)
> >
> > diff --git a/include/qapi/qmp/dispatch.h b/include/qapi/qmp/dispatch.h
> > index 9aa426a398..5a9cf82472 100644
> > --- a/include/qapi/qmp/dispatch.h
> > +++ b/include/qapi/qmp/dispatch.h
> > @@ -39,7 +39,8 @@ typedef QTAILQ_HEAD(QmpCommandList, QmpCommand) QmpCommandList;
> >
> >  void qmp_register_command(QmpCommandList *cmds, const char *name,
> >                            QmpCommandFunc *fn, QmpCommandOptions options);
> > -QmpCommand *qmp_find_command(QmpCommandList *cmds, const char *name);
> > +const QmpCommand *qmp_find_command(const QmpCommandList *cmds,
> > +                                   const char *name);
> >  void qmp_disable_command(QmpCommandList *cmds, const char *name);
> >  void qmp_enable_command(QmpCommandList *cmds, const char *name);
> >
> > @@ -47,13 +48,13 @@ bool qmp_command_is_enabled(const QmpCommand *cmd);
> >  const char *qmp_command_name(const QmpCommand *cmd);
> >  bool qmp_has_success_response(const QmpCommand *cmd);
> >  QDict *qmp_error_response(Error *err);
> > -QDict *qmp_dispatch(QmpCommandList *cmds, QObject *request,
> > +QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
> >                      bool allow_oob);
> >  bool qmp_is_oob(const QDict *dict);
> >
> > -typedef void (*qmp_cmd_callback_fn)(QmpCommand *cmd, void *opaque);
> > +typedef void (*qmp_cmd_callback_fn)(const QmpCommand *cmd, void *opaque);
> >
> > -void qmp_for_each_command(QmpCommandList *cmds, qmp_cmd_callback_fn fn,
> > +void qmp_for_each_command(const QmpCommandList *cmds, qmp_cmd_callback_fn fn,
> >                            void *opaque);
> >
> >  #endif
> > diff --git a/monitor/misc.c b/monitor/misc.c
> > index 3baa15f3bf..3052bfe8f1 100644
> > --- a/monitor/misc.c
> > +++ b/monitor/misc.c
> > @@ -230,7 +230,7 @@ static void hmp_info_help(Monitor *mon, const QDict *qdict)
> >      help_cmd(mon, "info");
> >  }
> >
> > -static void query_commands_cb(QmpCommand *cmd, void *opaque)
> > +static void query_commands_cb(const QmpCommand *cmd, void *opaque)
> >  {
> >      CommandInfoList *info, **list = opaque;
> >
> > diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h
> > index d78f5ca190..3e7dac5910 100644
> > --- a/monitor/monitor-internal.h
> > +++ b/monitor/monitor-internal.h
> > @@ -132,7 +132,7 @@ typedef struct {
> >       * qmp_capabilities succeeds, we go into command mode, and
> >       * @command becomes &qmp_commands.
> >       */
> > -    QmpCommandList *commands;
> > +    const QmpCommandList *commands;
> >      bool capab_offered[QMP_CAPABILITY__MAX]; /* capabilities offered */
> >      bool capab[QMP_CAPABILITY__MAX];         /* offered and accepted */
> >      /*
> > diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
> > index bc264b3c9b..857399c5fe 100644
> > --- a/qapi/qmp-dispatch.c
> > +++ b/qapi/qmp-dispatch.c
> > @@ -75,14 +75,14 @@ static QDict *qmp_dispatch_check_obj(const QObject *request, bool allow_oob,
> >      return dict;
> >  }
> >
> > -static QObject *do_qmp_dispatch(QmpCommandList *cmds, QObject *request,
> > +static QObject *do_qmp_dispatch(const QmpCommandList *cmds, QObject *request,
> >                                  bool allow_oob, Error **errp)
> >  {
> >      Error *local_err = NULL;
> >      bool oob;
> >      const char *command;
> >      QDict *args, *dict;
> > -    QmpCommand *cmd;
> > +    const QmpCommand *cmd;
> >      QObject *ret = NULL;
> >
> >      dict = qmp_dispatch_check_obj(request, allow_oob, errp);
> > @@ -164,7 +164,7 @@ bool qmp_is_oob(const QDict *dict)
> >          && !qdict_haskey(dict, "execute");
> >  }
> >
> > -QDict *qmp_dispatch(QmpCommandList *cmds, QObject *request,
> > +QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
> >                      bool allow_oob)
> >  {
> >      Error *err = NULL;
> > diff --git a/qapi/qmp-registry.c b/qapi/qmp-registry.c
> > index ca00f74795..d0f9a1d3e3 100644
> > --- a/qapi/qmp-registry.c
> > +++ b/qapi/qmp-registry.c
> > @@ -27,7 +27,7 @@ void qmp_register_command(QmpCommandList *cmds, const char *name,
> >      QTAILQ_INSERT_TAIL(cmds, cmd, node);
> >  }
> >
> > -QmpCommand *qmp_find_command(QmpCommandList *cmds, const char *name)
> > +const QmpCommand *qmp_find_command(const QmpCommandList *cmds, const char *name)
> >  {
> >      QmpCommand *cmd;
> >
> > @@ -77,10 +77,10 @@ bool qmp_has_success_response(const QmpCommand *cmd)
> >      return !(cmd->options & QCO_NO_SUCCESS_RESP);
> >  }
> >
> > -void qmp_for_each_command(QmpCommandList *cmds, qmp_cmd_callback_fn fn,
> > +void qmp_for_each_command(const QmpCommandList *cmds, qmp_cmd_callback_fn fn,
> >                            void *opaque)
> >  {
> > -    QmpCommand *cmd;
> > +    const QmpCommand *cmd;
> >
> >      QTAILQ_FOREACH(cmd, cmds, node) {
> >          fn(cmd, opaque);
> > diff --git a/qga/commands.c b/qga/commands.c
> > index 0c7d1385c2..05e9ab6c3d 100644
> > --- a/qga/commands.c
> > +++ b/qga/commands.c
> > @@ -54,7 +54,7 @@ void qmp_guest_ping(Error **errp)
> >      slog("guest-ping called");
> >  }
> >
> > -static void qmp_command_info(QmpCommand *cmd, void *opaque)
> > +static void qmp_command_info(const QmpCommand *cmd, void *opaque)
> >  {
> >      GuestAgentInfo *info = opaque;
> >      GuestAgentCommandInfo *cmd_info;
> > diff --git a/qga/main.c b/qga/main.c
> > index c35c2a2120..f23614528e 100644
> > --- a/qga/main.c
> > +++ b/qga/main.c
> > @@ -359,7 +359,7 @@ static gint ga_strcmp(gconstpointer str1, gconstpointer str2)
> >  }
> >
> >  /* disable commands that aren't safe for fsfreeze */
> > -static void ga_disable_non_whitelisted(QmpCommand *cmd, void *opaque)
> > +static void ga_disable_non_whitelisted(const QmpCommand *cmd, void *opaque)
> >  {
> >      bool whitelisted = false;
> >      int i = 0;
> > @@ -378,7 +378,7 @@ static void ga_disable_non_whitelisted(QmpCommand *cmd, void *opaque)
> >  }
> >
> >  /* [re-]enable all commands, except those explicitly blacklisted by user */
> > -static void ga_enable_non_blacklisted(QmpCommand *cmd, void *opaque)
> > +static void ga_enable_non_blacklisted(const QmpCommand *cmd, void *opaque)
> >  {
> >      GList *blacklist = opaque;
> >      const char *name = qmp_command_name(cmd);
> > @@ -918,7 +918,7 @@ int64_t ga_get_fd_handle(GAState *s, Error **errp)
> >      return handle;
> >  }
> >
> > -static void ga_print_cmd(QmpCommand *cmd, void *opaque)
> > +static void ga_print_cmd(const QmpCommand *cmd, void *opaque)
> >  {
> >      printf("%s\n", qmp_command_name(cmd));
> >  }
> >
>
> Reviewed-by: Damien Hedde <damien.hedde@greensocs.com>
>
> Damien
>


-- 
Marc-André Lureau


  reply	other threads:[~2020-02-17 11:53 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-08 15:00 [PATCH v6 00/25] monitor: add asynchronous command type Marc-André Lureau
2019-11-08 15:00 ` [PATCH v6 01/25] qmp: constify QmpCommand and list Marc-André Lureau
2019-11-08 16:50   ` Damien Hedde
2020-02-17 11:47     ` Marc-André Lureau [this message]
2019-11-08 15:01 ` [PATCH v6 02/25] json-lexer: make it safe to call destroy multiple times Marc-André Lureau
2019-11-08 16:04   ` Damien Hedde
2019-11-08 15:01 ` [PATCH v6 03/25] qmp: add QmpSession Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 04/25] QmpSession: add a return callback Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 05/25] QmpSession: add json parser and use it in qga Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 06/25] monitor: use qmp session to parse json feed Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 07/25] qga: simplify dispatch_return_cb Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 08/25] QmpSession: introduce QmpReturn Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 09/25] qmp: simplify qmp_return_error() Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 10/25] QmpSession: keep a queue of pending commands Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 11/25] QmpSession: return orderly Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 12/25] qmp: introduce asynchronous command type Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 13/25] scripts: learn 'async' qapi commands Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 14/25] qmp: add qmp_return_is_cancelled() Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 15/25] console: add graphic_hw_update_done() Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 16/25] ppm-save: pass opened fd Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 17/25] ui: add pixman image g_autoptr support Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 18/25] object: add " Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 19/25] screendump: replace FILE with QIOChannel and fix close()/qemu_close() Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 20/25] osdep: add qemu_unlink() Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 21/25] screendump: use qemu_unlink() Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 22/25] console: make screendump asynchronous Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 23/25] monitor: start making qmp_human_monitor_command() asynchronous Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 24/25] monitor: teach HMP about asynchronous commands Marc-André Lureau
2019-11-08 15:01 ` [PATCH v6 25/25] hmp: call the asynchronous QMP screendump to fix outdated/glitches Marc-André Lureau
2019-12-13 16:03 ` [PATCH v6 00/25] monitor: add asynchronous command type Kevin Wolf
2019-12-13 16:28   ` Marc-André Lureau
2019-12-16 12:07     ` Kevin Wolf
2020-01-06 18:21       ` Marc-André Lureau
2020-01-07  5:17         ` Kevin Wolf
2020-01-07 12:11           ` Marc-André Lureau
2020-01-13 15:58             ` Markus Armbruster
2020-01-13 16:54               ` Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAJ+F1CJks+3y6Wh93w+tT6YyO3-iW9kDFNqzW96OyXJ-O+xdaA@mail.gmail.com \
    --to=marcandre.lureau@gmail.com \
    --cc=armbru@redhat.com \
    --cc=damien.hedde@greensocs.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).