[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH, RFC v2] Use help sub-sections to create sub-hel
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH, RFC v2] Use help sub-sections to create sub-help options |
Date: |
Thu, 27 Aug 2015 23:37:44 +0200 |
Hi
On Thu, Aug 27, 2015 at 7:07 PM, Laurent Vivier <address@hidden> 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 <address@hidden>
> ---
> 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 <address@hidden>
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
> address@hidden -help-standard
> address@hidden -help-standard
> +Display standard options
> +ETEXI
> +
> +DEF("help-block", 0, QEMU_OPTION_h_block,
> + "-help-block display block options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-block
> address@hidden -help-block
> +Display block options
> +ETEXI
> +
> +DEF("help-usb", 0, QEMU_OPTION_h_usb,
> + "-help-usb display usb options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-usb
> address@hidden -help-usb
> +Display usb options
> +ETEXI
> +
> +DEF("help-display", 0, QEMU_OPTION_h_display,
> + "-help-display display display options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-display
> address@hidden -help-display
> +Display display options
> +ETEXI
> +
> +DEF("help-machine", 0, QEMU_OPTION_h_machine,
> + "-help-machine display machine options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-machine
> address@hidden -help-machine
> +Display machine options
> +ETEXI
> +
> +DEF("help-network", 0, QEMU_OPTION_h_network,
> + "-help-network display network options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-network
> address@hidden -help-network
> +Display network options
> +ETEXI
> +
> +DEF("help-character", 0, QEMU_OPTION_h_character,
> + "-help-character display character options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-character
> address@hidden -help-character
> +Display character options
> +ETEXI
> +
> +DEF("help-url", 0, QEMU_OPTION_h_url,
> + "-help-url display url options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-url
> address@hidden -help-url
> +Display url options
> +ETEXI
> +
> +DEF("help-bt", 0, QEMU_OPTION_h_bt,
> + "-help-bt display bt options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-bt
> address@hidden -help-bt
> +Display bt options
> +ETEXI
> +
> +DEF("help-tpm", 0, QEMU_OPTION_h_tpm,
> + "-help-tpm display tpm options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-tpm
> address@hidden -help-tpm
> +Display tpm options
> +ETEXI
> +
> +DEF("help-kernel", 0, QEMU_OPTION_h_kernel,
> + "-help-kernel display kernel options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-kernel
> address@hidden -help-kernel
> +Display kernel options
> +ETEXI
> +
> +DEF("help-expert", 0, QEMU_OPTION_h_expert,
> + "-help-expert display expert options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-expert
> address@hidden -help-expert
> +Display expert options
> +ETEXI
> +
> +DEF("help-object", 0, QEMU_OPTION_h_object,
> + "-help-object display object options\n", QEMU_ARCH_ALL)
> +STEXI
> address@hidden -help-object
> address@hidden -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
>
--
Marc-André Lureau