[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/29] monitor: New format for handlers argument
From: |
Luiz Capitulino |
Subject: |
Re: [Qemu-devel] [PATCH 06/29] monitor: New format for handlers argument types |
Date: |
Fri, 4 Sep 2009 11:48:11 -0300 |
On Fri, 04 Sep 2009 09:06:23 -0500
Anthony Liguori <address@hidden> wrote:
> Luiz Capitulino wrote:
> > On Mon, 24 Aug 2009 18:21:17 +0200
> > Markus Armbruster <address@hidden> wrote:
> >
> >
> >> Luiz Capitulino <address@hidden> writes:
> >>
> >>
> >>> Current handlers argument types, as defined in qemu-monitor.hx file,
> >>> are a sequence of chars where each one represents one argument type
> >>> of the command handler. The number of chars is also used to know how
> >>> many arguments a given handler accepts.
> >>>
> >>> This commit defines a new format, which makes mandatory the use of
> >>> a name for each argument.
> >>>
> >>> For example, do_eject() command handler is currently defined as:
> >>>
> >>> { "eject", "-fB", do_eject, ... }
> >>>
> >>> With the new format it becomes:
> >>>
> >>> { "eject", "force:-f,filename:B", do_eject, ... }
> >>>
> >>> This way the Monitor will be capable of setting up a dictionary, using
> >>> each argument's name as the key and the argument itself as the value.
> >>>
> >>> This commit also adds two new functions: key_get_info() and
> >>> next_arg_type(), both are used to parse the new format.
> >>>
> >>> Currently key_get_info() consumes the 'key' part of the new format and
> >>> discards it, this way the current parsing code is not affected by this
> >>> change.
> >>>
> >>> Signed-off-by: Luiz Capitulino <address@hidden>
> >>>
> >> Encoding the parameter list in a single args_type made perfect sense
> >> when a parameter was encoded in one or two characters. But having
> >> syntax and a parser... I don't know. Switch to an array of parameter
> >> descriptions that don't need to be parsed?
> >>
> >
> > I don't see how to do this w/o parsing, but anyway I think we should
> > be practical here and use what already exists.
> >
> I agree with Markus. I think we can start with this approach but I'd
> like to see it changed in the near future. Instead of having:
>
> { "eject", "force:-f,filename:B", do_eject, ... }
>
> I would expect something like:
>
> { .name = "eject",
> .args = (MonitorArgs[]){
> { .name = "force",
> .short = 'f',
> .type = MON_FLAG },
> {}},
> .func = do_eject,
> }
>
> Macros can be used to simplify things but I think this is the general
> idea that Markus was suggesting.
It's a good improvement indeed, couldn't see at first, sorry
about that.