All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: berrange@redhat.com, qemu-devel@nongnu.org,
	qemu-block@nongnu.org, dgilbert@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 10/11] monitor: Split out monitor/hmp.c
Date: Wed, 12 Jun 2019 17:31:08 +0200	[thread overview]
Message-ID: <20190612153108.GF9699@localhost.localdomain> (raw)
In-Reply-To: <87wohrx7r7.fsf@dusky.pond.sub.org>

Am 12.06.2019 um 15:17 hat Markus Armbruster geschrieben:
> Kevin Wolf <kwolf@redhat.com> writes:
> 
> > Move HMP infrastructure from monitor/misc.c to monitor/hmp.c. This is
> > code that can be shared for all targets, so compile it only once.
> >
> > The amount of function and particularly extern variables in
> > monitor_int.h is probably a bit larger than it needs to be, but this way
> > no non-trivial code modifications are needed. The interfaces between HMP
> > and the monitor core can be cleaned up later.
> >
> > Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > ---
> >  include/monitor/monitor.h |    1 +
> >  monitor/monitor_int.h     |   31 +
> >  monitor/hmp.c             | 1387 +++++++++++++++++++++++++++++++++++++
> >  monitor/misc.c            | 1338 +----------------------------------
> >  monitor/Makefile.objs     |    2 +-
> >  monitor/trace-events      |    4 +-
> >  6 files changed, 1429 insertions(+), 1334 deletions(-)
> >  create mode 100644 monitor/hmp.c
> >
> > diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h
> > index 7bbab05320..8547529e49 100644
> > --- a/include/monitor/monitor.h
> > +++ b/include/monitor/monitor.h
> > @@ -22,6 +22,7 @@ bool monitor_cur_is_qmp(void);
> >  void monitor_init_globals(void);
> >  void monitor_init(Chardev *chr, int flags);
> >  void monitor_init_qmp(Chardev *chr, int flags);
> > +void monitor_init_hmp(Chardev *chr, int flags);
> >  void monitor_cleanup(void);
> >  
> >  int monitor_suspend(Monitor *mon);
> > diff --git a/monitor/monitor_int.h b/monitor/monitor_int.h
> > index 4aabee54e1..88eaed9c5c 100644
> > --- a/monitor/monitor_int.h
> > +++ b/monitor/monitor_int.h
> > @@ -27,6 +27,7 @@
> >  
> >  #include "qemu-common.h"
> >  #include "monitor/monitor.h"
> > +#include "qemu/cutils.h"
> >  
> >  #include "qapi/qmp/qdict.h"
> >  #include "qapi/qmp/json-parser.h"
> > @@ -154,6 +155,29 @@ static inline bool monitor_is_qmp(const Monitor *mon)
> >      return (mon->flags & MONITOR_USE_CONTROL);
> >  }
> >  
> > +/**
> > + * Is @name in the '|' separated list of names @list?
> > + */
> > +static inline int 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;
> > +}
> > +
> 
> What's the justification for inline?

It seemed small enough, but maybe it isn't (it has also grown by two
lines after fixing the coding style). I can leave it in misc.c and just
make it public.

I'd just need a more specific name than compare_cmd() to make it public.

> >  typedef QTAILQ_HEAD(MonitorList, Monitor) MonitorList;
> >  extern IOThread *mon_iothread;
> >  extern QEMUBH *qmp_dispatcher_bh;
> > @@ -162,6 +186,8 @@ extern QemuMutex monitor_lock;
> >  extern MonitorList mon_list;
> >  extern int mon_refcount;
> >  
> > +extern mon_cmd_t mon_cmds[];
> > +
> 
> Any particular reason for not moving this one to hmp.c, along with
> info_cmds?  Question, not demand :)

Yes, it's not part of the core infrastructure, but contains commands
specific to the system emulator. If a tool were to use HMP, it would
have to provide its own command tables.

If we ever create a monitor/hmp-sysemu.c or something like it, this
would be a good place for the tables.

Kevin


  reply	other threads:[~2019-06-12 15:38 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-11 13:40 [Qemu-devel] [PATCH v2 00/11] monitor: Split monitor.c in core/HMP/QMP/misc Kevin Wolf
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 01/11] monitor: Remove unused password prompting fields Kevin Wolf
2019-06-12  6:43   ` Markus Armbruster
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 02/11] monitor: Split monitor_init in HMP and QMP function Kevin Wolf
2019-06-12  6:12   ` Markus Armbruster
2019-06-12  6:43     ` Markus Armbruster
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 03/11] monitor: Make MonitorQMP a child class of Monitor Kevin Wolf
2019-06-12  7:59   ` Markus Armbruster
2019-06-12 11:28     ` Kevin Wolf
2019-06-12 14:18       ` Markus Armbruster
2019-06-12  8:05   ` [Qemu-devel] [PATCH v2.1 02.5/11] monitor: Restrict use of Monitor member qmp to actual QMP monitors Markus Armbruster
2019-06-12  8:05   ` [Qemu-devel] [PATCH v2.1 03/11] monitor: Make MonitorQMP a child class of Monitor Markus Armbruster
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 04/11] monitor: Create MonitorHMP with readline state Kevin Wolf
2019-06-12  9:07   ` Markus Armbruster
2019-06-12  9:54     ` Peter Xu
2019-06-12 10:03     ` Kevin Wolf
2019-06-12 14:08       ` Markus Armbruster
2019-06-12 14:10         ` Dr. David Alan Gilbert
2019-06-12 15:03         ` Kevin Wolf
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 05/11] monitor: Move cmd_table to MonitorHMP Kevin Wolf
2019-06-12 11:45   ` Markus Armbruster
2019-06-12 13:55     ` Kevin Wolf
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 06/11] Move monitor.c to monitor/misc.c Kevin Wolf
2019-06-11 15:38   ` Dr. David Alan Gilbert
2019-06-12 11:57   ` Markus Armbruster
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 07/11] monitor: Move {hmp, qmp}.c to monitor/{hmp, qmp}-cmds.c Kevin Wolf
2019-06-11 16:09   ` Dr. David Alan Gilbert
2019-06-12 12:01   ` Markus Armbruster
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 08/11] monitor: Create monitor_int.h with common definitions Kevin Wolf
2019-06-12 12:18   ` Markus Armbruster
2019-06-12 12:43   ` Markus Armbruster
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 09/11] monitor: Split out monitor/qmp.c Kevin Wolf
2019-06-12 13:11   ` Markus Armbruster
2019-06-12 15:25     ` Kevin Wolf
2019-06-13  5:38       ` Markus Armbruster
2019-06-13 14:11         ` Kevin Wolf
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 10/11] monitor: Split out monitor/hmp.c Kevin Wolf
2019-06-12 13:17   ` Markus Armbruster
2019-06-12 15:31     ` Kevin Wolf [this message]
2019-06-13  5:44       ` Markus Armbruster
2019-06-11 13:40 ` [Qemu-devel] [PATCH v2 11/11] monitor: Split out monitor/monitor.c Kevin Wolf
2019-06-12 13:49   ` Markus Armbruster
2019-06-12 15:51     ` Kevin Wolf
2019-06-11 14:18 ` [Qemu-devel] [PATCH v2 00/11] monitor: Split monitor.c in core/HMP/QMP/misc no-reply
2019-06-11 15:24 ` no-reply
2019-06-12 14:22 ` Markus Armbruster

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=20190612153108.GF9699@localhost.localdomain \
    --to=kwolf@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=qemu-block@nongnu.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.