qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/3] Modular command line options


From: Ian Jackson
Subject: Re: [Qemu-devel] [PATCH 1/3] Modular command line options
Date: Thu, 22 May 2008 11:19:39 +0100

Jan Kiszka writes ("[Qemu-devel] [PATCH 1/3] Modular command line options"):
> Following up on my earlier proposal to introduce per-machine command
> line options, this version provides a more generic approach. It should
> also be usable for scenarios like per-arch or per-accelerator.

I approve of splitting the code up like this, and having a
table-driven parsing arrangement.  But ideally we could get rid of
`index' and the giant switch() statements too.  Something more like

  typedef void QEMUOptionParser(struct QEMUOption *option, const char *optarg);

  typedef struct QEMUOption {
      const char *name, *helpstring;
      QEMUOptionParser handler;
      int flags;
      int int_for_handler;
      void *void_for_handler;
  } QEMUOption;

  qemu_register_option_set(const QEMUOption *options);

We pass the QEMUOption* to the parser handler so it can see the
canonical name and any extra stuff put in the option structure.
and in vl.c you'd do something like this:

  static const QEMUOption basic_options[]= {
    ...
    { "hda", opthandler_drive, 0, 0 },
    { "hdb", opthandler_drive, 0, 1 },
    { "hdc", opthandler_drive, 0, 3 },
    { "hdd", opthandler_drive, 0, 4 },
    ...
    { 0 } /* null entry is required to terminate the table */
  }

    qemu_register_option_set(basic_options);

The linked list of option tables is private to the option parser.

Ian.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]