[Top][All Lists]
[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.