1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-02 01:18:26 +03:00

command: reduce struct size

Reduce memory usage for parser.
If the sizes would need to be bigger, man-generator warns.
For struct command_name  use just uint8_t to keep 1|0.
This commit is contained in:
Zdenek Kabelac 2024-05-11 22:00:42 +02:00
parent d85c9728fb
commit 8ac1cc593e

View File

@ -37,18 +37,18 @@ struct command_name {
command_fn fn; /* old style */ command_fn fn; /* old style */
uint16_t lvm_command_enum; /* as declared in commands.h with _COMMAND */ uint16_t lvm_command_enum; /* as declared in commands.h with _COMMAND */
uint16_t num_args;
uint16_t variants; /* number of command defs with this command name */
/* union of {required,optional}_opt_args for all commands with this name */ /* union of {required,optional}_opt_args for all commands with this name */
uint16_t valid_args[ARG_COUNT]; /* used for getopt */ uint16_t valid_args[ARG_COUNT]; /* used for getopt, store option */
int num_args;
/* the following are for generating help and man page output */ /* the following are for generating help and man page output */
uint8_t common_options[ARG_COUNT]; /* options common to all defs */ uint8_t common_options[ARG_COUNT]; /* options common to all defs 0/1 */
uint8_t all_options[ARG_COUNT]; /* union of options from all defs */ uint8_t all_options[ARG_COUNT]; /* union of options from all defs 0/1 */
int variants; /* number of command defs with this command name */ uint8_t variant_has_ro; /* do variants use required_opt_args ? */
int variant_has_ro; /* do variants use required_opt_args ? */ uint8_t variant_has_rp; /* do variants use required_pos_args ? */
int variant_has_rp; /* do variants use required_pos_args ? */ uint8_t variant_has_oo; /* do variants use optional_opt_args ? */
int variant_has_oo; /* do variants use optional_opt_args ? */ uint8_t variant_has_op; /* do variants use optional_pos_args ? */
int variant_has_op; /* do variants use optional_pos_args ? */
}; };
/* /*
@ -156,11 +156,11 @@ struct cmd_rule {
* optional. * optional.
*/ */
#define CMD_RO_ARGS 32 /* required opt args */ #define CMD_RO_ARGS 32 /* required opt args */
#define CMD_OO_ARGS 64 /* optional opt args */ #define CMD_OO_ARGS 56 /* optional opt args */
#define CMD_RP_ARGS 8 /* required positional args */ #define CMD_RP_ARGS 8 /* required positional args */
#define CMD_OP_ARGS 8 /* optional positional args */ #define CMD_OP_ARGS 8 /* optional positional args */
#define CMD_IO_ARGS 8 /* ignore opt args */ #define CMD_IO_ARGS 8 /* ignore opt args */
#define CMD_MAX_RULES 16 /* max number of rules per command def */ #define CMD_MAX_RULES 12 /* max number of rules per command def */
/* /*
* one or more from required_opt_args is required, * one or more from required_opt_args is required,