[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH, RFC] Use help sub-sections to create sub-help o
From: |
Laurent Vivier |
Subject: |
Re: [Qemu-devel] [PATCH, RFC] Use help sub-sections to create sub-help options |
Date: |
Thu, 27 Aug 2015 17:50:37 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 27/08/2015 17:44, Marc-André Lureau wrote:
> Hi
>
> On Thu, Aug 27, 2015 at 5:20 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>
>> ---
>> qemu-options.hx | 137 +++++++++++++++++++++++++++++++++++++++++++--
>> vl.c | 169
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> The patch works as expected, although it's a bit cumbersome this
> #define #undef dance, I don't have a good idea either, but maybe it
> would be slightly easier with an ENABLE_ALL and ENABLE_FOO, I think
> that could avoid the big list of #define #undef and make it a bit
> simpler too.
I agree with you, but my goal was to keep the default behavior if
nothing is defined. But if everyone agrees, I can change that.
>
>
>> 2 files changed, 302 insertions(+), 4 deletions(-)
>>
>> diff --git a/qemu-options.hx b/qemu-options.hx
>> index 77f5853..091cc21 100644
>> --- a/qemu-options.hx
>> +++ b/qemu-options.hx
>> @@ -6,17 +6,122 @@ 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_DISABLE_STANDARD) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> 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 +515,9 @@ STEXI
>> @end table
>> ETEXI
>> DEFHEADING()
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_BLOCK) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Block device options:)
>> STEXI
>> @table @option
>> @@ -798,7 +905,9 @@ STEXI
>> @end table
>> ETEXI
>> DEFHEADING()
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_USB) && defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(USB options:)
>> STEXI
>> @table @option
>> @@ -862,7 +971,9 @@ STEXI
>> @end table
>> ETEXI
>> DEFHEADING()
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_DISPLAY) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Display options:)
>> STEXI
>> @table @option
>> @@ -1329,7 +1440,9 @@ STEXI
>> @end table
>> ETEXI
>> ARCHHEADING(, QEMU_ARCH_I386)
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_MACHINE) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> ARCHHEADING(i386 target only:, QEMU_ARCH_I386)
>> STEXI
>> @table @option
>> @@ -1441,7 +1554,9 @@ STEXI
>> @end table
>> ETEXI
>> DEFHEADING()
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_NETWORK) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Network options:)
>> STEXI
>> @table @option
>> @@ -1995,7 +2110,9 @@ STEXI
>> @end table
>> ETEXI
>> DEFHEADING()
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_CHARACTER) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Character device options:)
>> STEXI
>>
>> @@ -2273,7 +2390,9 @@ STEXI
>> @end table
>> ETEXI
>> DEFHEADING()
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_URL) && defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Device URL Syntax:)
>> STEXI
>>
>> @@ -2482,7 +2601,9 @@ ETEXI
>> STEXI
>> @end table
>> ETEXI
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_BT) && defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Bluetooth(R) options:)
>> STEXI
>> @table @option
>> @@ -2557,7 +2678,9 @@ STEXI
>> @end table
>> ETEXI
>> DEFHEADING()
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_TPM) && defined(QEMU_OPTIONS_GENERATE_HELP))
>> #ifdef CONFIG_TPM
>> DEFHEADING(TPM device options:)
>>
>> @@ -2632,7 +2755,9 @@ ETEXI
>> DEFHEADING()
>>
>> #endif
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_KERNEL) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Linux/Multiboot boot specific:)
>> STEXI
>>
>> @@ -2688,7 +2813,9 @@ STEXI
>> @end table
>> ETEXI
>> DEFHEADING()
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_EXPERT) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Debug/Expert options:)
>> STEXI
>> @table @option
>> @@ -3510,7 +3637,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 +3645,9 @@ STEXI
>> Dump json-encoded vmstate information for current machine type to file
>> in @var{file}
>> ETEXI
>> +#endif
>>
>> +#if !(defined(QEMU_HELP_DISABLE_OBJECT) &&
>> defined(QEMU_OPTIONS_GENERATE_HELP))
>> DEFHEADING(Generic object creation)
>>
>> DEF("object", HAS_ARG, QEMU_OPTION_object,
>> @@ -3571,7 +3700,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..65a815f 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -1931,6 +1931,136 @@ static void help(int exitcode)
>> exit(exitcode);
>> }
>>
>> +#define QEMU_HELP_DISABLE_BLOCK
>> +#define QEMU_HELP_DISABLE_USB
>> +#define QEMU_HELP_DISABLE_DISPLAY
>> +#define QEMU_HELP_DISABLE_MACHINE
>> +#define QEMU_HELP_DISABLE_NETWORK
>> +#define QEMU_HELP_DISABLE_CHARACTER
>> +#define QEMU_HELP_DISABLE_URL
>> +#define QEMU_HELP_DISABLE_BT
>> +#define QEMU_HELP_DISABLE_TPM
>> +#define QEMU_HELP_DISABLE_KERNEL
>> +#define QEMU_HELP_DISABLE_EXPERT
>> +#define QEMU_HELP_DISABLE_OBJECT
>> +
>> +static void help_standard(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +
>> +#define QEMU_HELP_DISABLE_STANDARD
>> +#undef QEMU_HELP_DISABLE_BLOCK
>> +static void help_block(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_BLOCK
>> +#undef QEMU_HELP_DISABLE_USB
>> +static void help_usb(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_USB
>> +#undef QEMU_HELP_DISABLE_DISPLAY
>> +static void help_display(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_DISPLAY
>> +#undef QEMU_HELP_DISABLE_MACHINE
>> +static void help_machine(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_MACHINE
>> +#undef QEMU_HELP_DISABLE_NETWORK
>> +static void help_network(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_NETWORK
>> +#undef QEMU_HELP_DISABLE_CHARACTER
>> +static void help_character(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_CHARACTER
>> +#undef QEMU_HELP_DISABLE_URL
>> +static void help_url(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_URL
>> +#undef QEMU_HELP_DISABLE_BT
>> +static void help_bt(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_BT
>> +#undef QEMU_HELP_DISABLE_TPM
>> +static void help_tpm(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_TPM
>> +#undef QEMU_HELP_DISABLE_KERNEL
>> +static void help_kernel(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_KERNEL
>> +#undef QEMU_HELP_DISABLE_EXPERT
>> +static void help_expert(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#define QEMU_HELP_DISABLE_EXPERT
>> +#undef QEMU_HELP_DISABLE_OBJECT
>> +static void help_object(int exitcode)
>> +{
>> +#define QEMU_OPTIONS_GENERATE_HELP
>> +#include "qemu-options-wrapper.h"
>> + exit(exitcode);
>> +}
>> +#undef QEMU_HELP_DISABLE_STANDARD
>> +#undef QEMU_HELP_DISABLE_BLOCK
>> +#undef QEMU_HELP_DISABLE_USB
>> +#undef QEMU_HELP_DISABLE_DISPLAY
>> +#undef QEMU_HELP_DISABLE_NETWORK
>> +#undef QEMU_HELP_DISABLE_CHARACTER
>> +#undef QEMU_HELP_DISABLE_URL
>> +#undef QEMU_HELP_DISABLE_BT
>> +#undef QEMU_HELP_DISABLE_TPM
>> +#undef QEMU_HELP_DISABLE_KERNEL
>> +#undef QEMU_HELP_DISABLE_EXPERT
>> +#undef QEMU_HELP_DISABLE_OBJECT
>> +
>> +
>> #define HAS_ARG 0x0001
>>
>> typedef struct QEMUOption {
>> @@ -3318,6 +3448,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 +3496,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
>>
>>
>
>
>