On Fri, Jul 03, 2026 at 03:17:11PM +0200, Markus Armbruster wrote:
> Daniel P. Berrangé <[email protected]> writes:
> 
> > This is associates both QMP and HMP monitors with a character
> > device backend.
> >
> > Reviewed-by: Marc-André Lureau <[email protected]>
> > Tested-by: Peter Krempa <[email protected]>
> > Signed-off-by: Daniel P. Berrangé <[email protected]>
> > ---
> >  chardev/char.c             |  3 ++-
> >  gdbstub/system.c           |  4 ++--
> >  include/monitor/monitor.h  |  4 ++--
> >  monitor/hmp.c              | 10 ++++++--
> >  monitor/monitor-internal.h |  2 ++
> >  monitor/monitor.c          | 47 ++++++++++++++++++++++++++++++--------
> >  monitor/qmp.c              | 18 ++++++++++-----
> >  stubs/monitor-internal.c   |  2 +-
> >  8 files changed, 67 insertions(+), 23 deletions(-)
> >
> > diff --git a/chardev/char.c b/chardev/char.c
> > index c71ffa7963..22e5bae388 100644
> > --- a/chardev/char.c
> > +++ b/chardev/char.c
> > @@ -804,8 +804,9 @@ static Chardev *qemu_chr_new_from_name(const char 
> > *label, const char *filename,
> >      }
> >  
> >      if (qemu_opt_get_bool(opts, "mux", 0)) {
> > +        const char *chardev_id = qemu_opts_id(opts);
> >          assert(permit_mux_mon);
> > -        monitor_new_hmp(NULL, chr, true, &err);
> > +        monitor_new_hmp(NULL, chardev_id, true, &err);
> >          if (err) {
> >              error_report_err(err);
> >              object_unparent(OBJECT(chr));
> > diff --git a/gdbstub/system.c b/gdbstub/system.c
> > index fda8ef9352..d681476f5e 100644
> > --- a/gdbstub/system.c
> > +++ b/gdbstub/system.c
> > @@ -387,9 +387,9 @@ bool gdbserver_start(const char *device, Error **errp)
> >          qemu_add_vm_change_state_handler(gdb_vm_state_change, NULL);
> >  
> >          /* Initialize a monitor terminal for gdb */
> > -        mon_chr = qemu_chardev_new(NULL, TYPE_CHARDEV_GDB,
> > +        mon_chr = qemu_chardev_new("gdbchrdev0", TYPE_CHARDEV_GDB,
> >                                     NULL, NULL, &error_abort);
> 
> This chardev now gets ID "gdbchrdev0" instead of id_generate(ID_CHR).
> 
> If you truly need this, you have to mention it in the commit message.

Not required.

> 
> > -        monitor_new_hmp(NULL, mon_chr, false, &error_abort);
> > +        monitor_new_hmp(NULL, "gdbchrdev0", false, &error_abort);
> 
> If you don't, then passing mon_chr->label here should do the trick.

Yes.



> > @@ -1538,22 +1539,27 @@ static void monitor_readline_flush(void *opaque)
> >      monitor_flush(&mon->parent_obj);
> >  }
> >  
> > -void monitor_new_hmp(const char *id, Chardev *chr,
> > +void monitor_new_hmp(const char *id, const char *chardev_id,
> >                       bool use_readline, Error **errp)
> 
> You now pass a chardev ID instead of a Chardev *.
> 
> I *guess* that's possible because chardev_new() asserts it's passed an
> ID.
> 
> I should now check all callers of monitor_new_hmp() to make sure they
> pass the correct ID.  On a Friday afternoon.  I hoist the white flag.
> 
> Such refactorings should be mentioned in the commit message.  Even
> better would be a separate patch.

I'll switch to a separate commit for this.


With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|

Reply via email to