Message ID | 1440695222-12423-1-git-send-email-lvivier@redhat.com |
---|---|
State | New |
Headers | show |
Hi On Thu, Aug 27, 2015 at 7:07 PM, Laurent Vivier <lvivier@redhat.com> wrote: > As '-help' output is 400 lines long it is not easy > to find information, but generally we know from > which area we want the information. > > As subsections already exist in the help description, > add some command options to only display the wanted > subsection. > > As more is better, this patch adds 13 lines to the -help output: > > -help-standard display standard options > -help-block display block options > -help-usb display usb options > -help-display display display options > -help-machine display machine options > -help-network display network options > -help-character display character options > -help-url display url options > -help-bt display bt options > -help-tpm display tpm options > -help-kernel display kernel options > -help-expert display expert options > -help-object display object options > > Example: > > $ qemu-system-x86_64 -help-kernel > Linux/Multiboot boot specific: > -kernel bzImage use 'bzImage' as kernel image > -append cmdline use 'cmdline' as kernel command line > -initrd file use 'file' as initial ram disk > -dtb file use 'file' as device tree image > > Signed-off-by: Laurent Vivier <lvivier@redhat.com> > --- > v2: simplify the dance of #define/#undef, thanks to Marc-André. > > qemu-options.hx | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- > vl.c | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 280 insertions(+), 4 deletions(-) > Looks good to me & works fine Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> I would prefer to not have all the --help-* in --help-standard, but that's quite minor. But if you agree, it's perhaps worth the extra effort though thanks > diff --git a/qemu-options.hx b/qemu-options.hx > index 77f5853..49b78df 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -6,17 +6,123 @@ HXCOMM construct option structures, enums and help message for specified > HXCOMM architectures. > HXCOMM HXCOMM can be used for comments, discarded from both texi and C > > +#if defined(QEMU_HELP_SELECT_STANDARD) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_STANDARD > DEFHEADING(Standard options:) > STEXI > @table @option > ETEXI > > DEF("help", 0, QEMU_OPTION_h, > - "-h or -help display this help and exit\n", QEMU_ARCH_ALL) > + "-h or -help display all help options and exit\n", QEMU_ARCH_ALL) > STEXI > @item -h > @findex -h > -Display help and exit > +Display all help options and exit > +ETEXI > + > +DEF("help-standard", 0, QEMU_OPTION_h_standard, > + "-help-standard display standard options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-standard > +@findex -help-standard > +Display standard options > +ETEXI > + > +DEF("help-block", 0, QEMU_OPTION_h_block, > + "-help-block display block options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-block > +@findex -help-block > +Display block options > +ETEXI > + > +DEF("help-usb", 0, QEMU_OPTION_h_usb, > + "-help-usb display usb options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-usb > +@findex -help-usb > +Display usb options > +ETEXI > + > +DEF("help-display", 0, QEMU_OPTION_h_display, > + "-help-display display display options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-display > +@findex -help-display > +Display display options > +ETEXI > + > +DEF("help-machine", 0, QEMU_OPTION_h_machine, > + "-help-machine display machine options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-machine > +@findex -help-machine > +Display machine options > +ETEXI > + > +DEF("help-network", 0, QEMU_OPTION_h_network, > + "-help-network display network options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-network > +@findex -help-network > +Display network options > +ETEXI > + > +DEF("help-character", 0, QEMU_OPTION_h_character, > + "-help-character display character options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-character > +@findex -help-character > +Display character options > +ETEXI > + > +DEF("help-url", 0, QEMU_OPTION_h_url, > + "-help-url display url options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-url > +@findex -help-url > +Display url options > +ETEXI > + > +DEF("help-bt", 0, QEMU_OPTION_h_bt, > + "-help-bt display bt options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-bt > +@findex -help-bt > +Display bt options > +ETEXI > + > +DEF("help-tpm", 0, QEMU_OPTION_h_tpm, > + "-help-tpm display tpm options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-tpm > +@findex -help-tpm > +Display tpm options > +ETEXI > + > +DEF("help-kernel", 0, QEMU_OPTION_h_kernel, > + "-help-kernel display kernel options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-kernel > +@findex -help-kernel > +Display kernel options > +ETEXI > + > +DEF("help-expert", 0, QEMU_OPTION_h_expert, > + "-help-expert display expert options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-expert > +@findex -help-expert > +Display expert options > +ETEXI > + > +DEF("help-object", 0, QEMU_OPTION_h_object, > + "-help-object display object options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-object > +@findex -help-object > +Display object options > ETEXI > > DEF("version", 0, QEMU_OPTION_version, > @@ -410,7 +516,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_BLOCK) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_BLOCK > DEFHEADING(Block device options:) > STEXI > @table @option > @@ -798,7 +907,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_USB) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_USB > DEFHEADING(USB options:) > STEXI > @table @option > @@ -862,7 +974,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_DISPLAY) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_DISPLAY > DEFHEADING(Display options:) > STEXI > @table @option > @@ -1329,7 +1444,10 @@ STEXI > @end table > ETEXI > ARCHHEADING(, QEMU_ARCH_I386) > +#endif > > +#if defined(QEMU_HELP_SELECT_MACHINE) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_MACHINE > ARCHHEADING(i386 target only:, QEMU_ARCH_I386) > STEXI > @table @option > @@ -1441,7 +1559,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_NETWORK) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_NETWORK > DEFHEADING(Network options:) > STEXI > @table @option > @@ -1995,7 +2116,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_CHARACTER) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_CHARACTER > DEFHEADING(Character device options:) > STEXI > > @@ -2273,7 +2397,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_URL) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_URL > DEFHEADING(Device URL Syntax:) > STEXI > > @@ -2482,7 +2609,10 @@ ETEXI > STEXI > @end table > ETEXI > +#endif > > +#if defined(QEMU_HELP_SELECT_BT) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_BT > DEFHEADING(Bluetooth(R) options:) > STEXI > @table @option > @@ -2557,7 +2687,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_TPM) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_TPM > #ifdef CONFIG_TPM > DEFHEADING(TPM device options:) > > @@ -2632,7 +2765,10 @@ ETEXI > DEFHEADING() > > #endif > +#endif > > +#if defined(QEMU_HELP_SELECT_KERNEL) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_KERNEL > DEFHEADING(Linux/Multiboot boot specific:) > STEXI > > @@ -2688,7 +2824,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_EXPERT) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_EXPERT > DEFHEADING(Debug/Expert options:) > STEXI > @table @option > @@ -3510,7 +3649,7 @@ DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate, > " Output vmstate information in JSON format to file.\n" > " Use the scripts/vmstate-static-checker.py file to\n" > " check for possible regressions in migration code\n" > - " by comparing two such vmstate dumps.", > + " by comparing two such vmstate dumps.\n", > QEMU_ARCH_ALL) > STEXI > @item -dump-vmstate @var{file} > @@ -3518,7 +3657,10 @@ STEXI > Dump json-encoded vmstate information for current machine type to file > in @var{file} > ETEXI > +#endif > > +#if defined(QEMU_HELP_SELECT_OBJECT) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_OBJECT > DEFHEADING(Generic object creation) > > DEF("object", HAS_ARG, QEMU_OPTION_object, > @@ -3571,7 +3713,7 @@ to the RNG daemon. > @end table > > ETEXI > - > +#endif > > HXCOMM This is the last statement. Insert new options before this line! > STEXI > diff --git a/vl.c b/vl.c > index 584ca88..e581dd2 100644 > --- a/vl.c > +++ b/vl.c > @@ -1931,6 +1931,101 @@ static void help(int exitcode) > exit(exitcode); > } > > +#define QEMU_HELP_SELECT > +static void help_standard(int exitcode) > +{ > +#define QEMU_HELP_SELECT_STANDARD > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_block(int exitcode) > +{ > +#define QEMU_HELP_SELECT_BLOCK > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_usb(int exitcode) > +{ > +#define QEMU_HELP_SELECT_USB > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_display(int exitcode) > +{ > +#define QEMU_HELP_SELECT_DISPLAY > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_machine(int exitcode) > +{ > +#define QEMU_HELP_SELECT_MACHINE > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_network(int exitcode) > +{ > +#define QEMU_HELP_SELECT_NETWORK > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_character(int exitcode) > +{ > +#define QEMU_HELP_SELECT_CHARACTER > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_url(int exitcode) > +{ > +#define QEMU_HELP_SELECT_URL > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_bt(int exitcode) > +{ > +#define QEMU_HELP_SELECT_BT > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_tpm(int exitcode) > +{ > +#define QEMU_HELP_SELECT_TPM > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_kernel(int exitcode) > +{ > +#define QEMU_HELP_SELECT_KERNEL > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_expert(int exitcode) > +{ > +#define QEMU_HELP_SELECT_EXPERT > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_object(int exitcode) > +{ > +#define QEMU_HELP_SELECT_OBJECT > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +#undef QEMU_HELP_SELECT > + > + > #define HAS_ARG 0x0001 > > typedef struct QEMUOption { > @@ -3318,6 +3413,42 @@ int main(int argc, char **argv, char **envp) > case QEMU_OPTION_h: > help(0); > break; > + case QEMU_OPTION_h_standard: > + help_standard(0); > + break; > + case QEMU_OPTION_h_block: > + help_block(0); > + break; > + case QEMU_OPTION_h_usb: > + help_usb(0); > + break; > + case QEMU_OPTION_h_display: > + help_display(0); > + break; > + case QEMU_OPTION_h_machine: > + help_machine(0); > + break; > + case QEMU_OPTION_h_network: > + help_network(0); > + break; > + case QEMU_OPTION_h_character: > + help_character(0); > + break; > + case QEMU_OPTION_h_url: > + help_url(0); > + break; > + case QEMU_OPTION_h_bt: > + help_bt(0); > + break; > + case QEMU_OPTION_h_kernel: > + help_kernel(0); > + break; > + case QEMU_OPTION_h_expert: > + help_expert(0); > + break; > + case QEMU_OPTION_h_object: > + help_object(0); > + break; > case QEMU_OPTION_version: > version(); > exit(0); > @@ -3330,6 +3461,9 @@ int main(int argc, char **argv, char **envp) > } > break; > #ifdef CONFIG_TPM > + case QEMU_OPTION_h_tpm: > + help_tpm(0); > + break; > case QEMU_OPTION_tpmdev: > if (tpm_config_parse(qemu_find_opts("tpmdev"), optarg) < 0) { > exit(1); > -- > 2.1.0 >
diff --git a/qemu-options.hx b/qemu-options.hx index 77f5853..49b78df 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -6,17 +6,123 @@ HXCOMM construct option structures, enums and help message for specified HXCOMM architectures. HXCOMM HXCOMM can be used for comments, discarded from both texi and C +#if defined(QEMU_HELP_SELECT_STANDARD) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_STANDARD DEFHEADING(Standard options:) STEXI @table @option ETEXI DEF("help", 0, QEMU_OPTION_h, - "-h or -help display this help and exit\n", QEMU_ARCH_ALL) + "-h or -help display all help options and exit\n", QEMU_ARCH_ALL) STEXI @item -h @findex -h -Display help and exit +Display all help options and exit +ETEXI + +DEF("help-standard", 0, QEMU_OPTION_h_standard, + "-help-standard display standard options\n", QEMU_ARCH_ALL) +STEXI +@item -help-standard +@findex -help-standard +Display standard options +ETEXI + +DEF("help-block", 0, QEMU_OPTION_h_block, + "-help-block display block options\n", QEMU_ARCH_ALL) +STEXI +@item -help-block +@findex -help-block +Display block options +ETEXI + +DEF("help-usb", 0, QEMU_OPTION_h_usb, + "-help-usb display usb options\n", QEMU_ARCH_ALL) +STEXI +@item -help-usb +@findex -help-usb +Display usb options +ETEXI + +DEF("help-display", 0, QEMU_OPTION_h_display, + "-help-display display display options\n", QEMU_ARCH_ALL) +STEXI +@item -help-display +@findex -help-display +Display display options +ETEXI + +DEF("help-machine", 0, QEMU_OPTION_h_machine, + "-help-machine display machine options\n", QEMU_ARCH_ALL) +STEXI +@item -help-machine +@findex -help-machine +Display machine options +ETEXI + +DEF("help-network", 0, QEMU_OPTION_h_network, + "-help-network display network options\n", QEMU_ARCH_ALL) +STEXI +@item -help-network +@findex -help-network +Display network options +ETEXI + +DEF("help-character", 0, QEMU_OPTION_h_character, + "-help-character display character options\n", QEMU_ARCH_ALL) +STEXI +@item -help-character +@findex -help-character +Display character options +ETEXI + +DEF("help-url", 0, QEMU_OPTION_h_url, + "-help-url display url options\n", QEMU_ARCH_ALL) +STEXI +@item -help-url +@findex -help-url +Display url options +ETEXI + +DEF("help-bt", 0, QEMU_OPTION_h_bt, + "-help-bt display bt options\n", QEMU_ARCH_ALL) +STEXI +@item -help-bt +@findex -help-bt +Display bt options +ETEXI + +DEF("help-tpm", 0, QEMU_OPTION_h_tpm, + "-help-tpm display tpm options\n", QEMU_ARCH_ALL) +STEXI +@item -help-tpm +@findex -help-tpm +Display tpm options +ETEXI + +DEF("help-kernel", 0, QEMU_OPTION_h_kernel, + "-help-kernel display kernel options\n", QEMU_ARCH_ALL) +STEXI +@item -help-kernel +@findex -help-kernel +Display kernel options +ETEXI + +DEF("help-expert", 0, QEMU_OPTION_h_expert, + "-help-expert display expert options\n", QEMU_ARCH_ALL) +STEXI +@item -help-expert +@findex -help-expert +Display expert options +ETEXI + +DEF("help-object", 0, QEMU_OPTION_h_object, + "-help-object display object options\n", QEMU_ARCH_ALL) +STEXI +@item -help-object +@findex -help-object +Display object options ETEXI DEF("version", 0, QEMU_OPTION_version, @@ -410,7 +516,10 @@ STEXI @end table ETEXI DEFHEADING() +#endif +#if defined(QEMU_HELP_SELECT_BLOCK) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_BLOCK DEFHEADING(Block device options:) STEXI @table @option @@ -798,7 +907,10 @@ STEXI @end table ETEXI DEFHEADING() +#endif +#if defined(QEMU_HELP_SELECT_USB) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_USB DEFHEADING(USB options:) STEXI @table @option @@ -862,7 +974,10 @@ STEXI @end table ETEXI DEFHEADING() +#endif +#if defined(QEMU_HELP_SELECT_DISPLAY) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_DISPLAY DEFHEADING(Display options:) STEXI @table @option @@ -1329,7 +1444,10 @@ STEXI @end table ETEXI ARCHHEADING(, QEMU_ARCH_I386) +#endif +#if defined(QEMU_HELP_SELECT_MACHINE) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_MACHINE ARCHHEADING(i386 target only:, QEMU_ARCH_I386) STEXI @table @option @@ -1441,7 +1559,10 @@ STEXI @end table ETEXI DEFHEADING() +#endif +#if defined(QEMU_HELP_SELECT_NETWORK) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_NETWORK DEFHEADING(Network options:) STEXI @table @option @@ -1995,7 +2116,10 @@ STEXI @end table ETEXI DEFHEADING() +#endif +#if defined(QEMU_HELP_SELECT_CHARACTER) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_CHARACTER DEFHEADING(Character device options:) STEXI @@ -2273,7 +2397,10 @@ STEXI @end table ETEXI DEFHEADING() +#endif +#if defined(QEMU_HELP_SELECT_URL) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_URL DEFHEADING(Device URL Syntax:) STEXI @@ -2482,7 +2609,10 @@ ETEXI STEXI @end table ETEXI +#endif +#if defined(QEMU_HELP_SELECT_BT) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_BT DEFHEADING(Bluetooth(R) options:) STEXI @table @option @@ -2557,7 +2687,10 @@ STEXI @end table ETEXI DEFHEADING() +#endif +#if defined(QEMU_HELP_SELECT_TPM) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_TPM #ifdef CONFIG_TPM DEFHEADING(TPM device options:) @@ -2632,7 +2765,10 @@ ETEXI DEFHEADING() #endif +#endif +#if defined(QEMU_HELP_SELECT_KERNEL) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_KERNEL DEFHEADING(Linux/Multiboot boot specific:) STEXI @@ -2688,7 +2824,10 @@ STEXI @end table ETEXI DEFHEADING() +#endif +#if defined(QEMU_HELP_SELECT_EXPERT) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_EXPERT DEFHEADING(Debug/Expert options:) STEXI @table @option @@ -3510,7 +3649,7 @@ DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate, " Output vmstate information in JSON format to file.\n" " Use the scripts/vmstate-static-checker.py file to\n" " check for possible regressions in migration code\n" - " by comparing two such vmstate dumps.", + " by comparing two such vmstate dumps.\n", QEMU_ARCH_ALL) STEXI @item -dump-vmstate @var{file} @@ -3518,7 +3657,10 @@ STEXI Dump json-encoded vmstate information for current machine type to file in @var{file} ETEXI +#endif +#if defined(QEMU_HELP_SELECT_OBJECT) || !defined(QEMU_HELP_SELECT) +#undef QEMU_HELP_SELECT_OBJECT DEFHEADING(Generic object creation) DEF("object", HAS_ARG, QEMU_OPTION_object, @@ -3571,7 +3713,7 @@ to the RNG daemon. @end table ETEXI - +#endif HXCOMM This is the last statement. Insert new options before this line! STEXI diff --git a/vl.c b/vl.c index 584ca88..e581dd2 100644 --- a/vl.c +++ b/vl.c @@ -1931,6 +1931,101 @@ static void help(int exitcode) exit(exitcode); } +#define QEMU_HELP_SELECT +static void help_standard(int exitcode) +{ +#define QEMU_HELP_SELECT_STANDARD +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_block(int exitcode) +{ +#define QEMU_HELP_SELECT_BLOCK +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_usb(int exitcode) +{ +#define QEMU_HELP_SELECT_USB +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_display(int exitcode) +{ +#define QEMU_HELP_SELECT_DISPLAY +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_machine(int exitcode) +{ +#define QEMU_HELP_SELECT_MACHINE +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_network(int exitcode) +{ +#define QEMU_HELP_SELECT_NETWORK +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_character(int exitcode) +{ +#define QEMU_HELP_SELECT_CHARACTER +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_url(int exitcode) +{ +#define QEMU_HELP_SELECT_URL +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_bt(int exitcode) +{ +#define QEMU_HELP_SELECT_BT +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_tpm(int exitcode) +{ +#define QEMU_HELP_SELECT_TPM +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_kernel(int exitcode) +{ +#define QEMU_HELP_SELECT_KERNEL +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_expert(int exitcode) +{ +#define QEMU_HELP_SELECT_EXPERT +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +static void help_object(int exitcode) +{ +#define QEMU_HELP_SELECT_OBJECT +#define QEMU_OPTIONS_GENERATE_HELP +#include "qemu-options-wrapper.h" + exit(exitcode); +} +#undef QEMU_HELP_SELECT + + #define HAS_ARG 0x0001 typedef struct QEMUOption { @@ -3318,6 +3413,42 @@ int main(int argc, char **argv, char **envp) case QEMU_OPTION_h: help(0); break; + case QEMU_OPTION_h_standard: + help_standard(0); + break; + case QEMU_OPTION_h_block: + help_block(0); + break; + case QEMU_OPTION_h_usb: + help_usb(0); + break; + case QEMU_OPTION_h_display: + help_display(0); + break; + case QEMU_OPTION_h_machine: + help_machine(0); + break; + case QEMU_OPTION_h_network: + help_network(0); + break; + case QEMU_OPTION_h_character: + help_character(0); + break; + case QEMU_OPTION_h_url: + help_url(0); + break; + case QEMU_OPTION_h_bt: + help_bt(0); + break; + case QEMU_OPTION_h_kernel: + help_kernel(0); + break; + case QEMU_OPTION_h_expert: + help_expert(0); + break; + case QEMU_OPTION_h_object: + help_object(0); + break; case QEMU_OPTION_version: version(); exit(0); @@ -3330,6 +3461,9 @@ int main(int argc, char **argv, char **envp) } break; #ifdef CONFIG_TPM + case QEMU_OPTION_h_tpm: + help_tpm(0); + break; case QEMU_OPTION_tpmdev: if (tpm_config_parse(qemu_find_opts("tpmdev"), optarg) < 0) { exit(1);
As '-help' output is 400 lines long it is not easy to find information, but generally we know from which area we want the information. As subsections already exist in the help description, add some command options to only display the wanted subsection. As more is better, this patch adds 13 lines to the -help output: -help-standard display standard options -help-block display block options -help-usb display usb options -help-display display display options -help-machine display machine options -help-network display network options -help-character display character options -help-url display url options -help-bt display bt options -help-tpm display tpm options -help-kernel display kernel options -help-expert display expert options -help-object display object options Example: $ qemu-system-x86_64 -help-kernel Linux/Multiboot boot specific: -kernel bzImage use 'bzImage' as kernel image -append cmdline use 'cmdline' as kernel command line -initrd file use 'file' as initial ram disk -dtb file use 'file' as device tree image Signed-off-by: Laurent Vivier <lvivier@redhat.com> --- v2: simplify the dance of #define/#undef, thanks to Marc-André. qemu-options.hx | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- vl.c | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 280 insertions(+), 4 deletions(-)