[PATCH 1/2] makedumpfile: Assign non-printable value as short options

Atsushi Kumagai kumagai-atsushi at mxc.nes.nec.co.jp
Mon Jul 1 21:59:34 EDT 2013


On Fri, 28 Jun 2013 16:13:51 +0800
Baoquan He <bhe at redhat.com> wrote:

> Characters for short options is limited, and now makedumpfile has
> considerably many options. As times go on, no enough reasonable
> letters can be assigned to each functionality with short options.
> 
> E.g non-cyclic vs Y, cyclic-buffer vs Z, eppic vs S.
> 
> Now assign non-printable value to these kind of short optins, meanwhile
> define them as indicative MACRO which can make code more readable.
> 
> Signed-off-by: Baoquan He <bhe at redhat.com>

Looks good to me, thanks Baoquan.

v1.5.4 is almost ready to be released, so I'll merge this patch set
into v1.5.5.


Thanks
Atsushi Kumagai

> ---
>  makedumpfile.c | 88 +++++++++++++++++++++++++++++-----------------------------
>  makedumpfile.h | 35 +++++++++++++++++++++++
>  2 files changed, 79 insertions(+), 44 deletions(-)
> 
> diff --git a/makedumpfile.c b/makedumpfile.c
> index b42565c..801eda0 100644
> --- a/makedumpfile.c
> +++ b/makedumpfile.c
> @@ -8555,20 +8555,20 @@ calculate_cyclic_buffer_size(void) {
>  }
>  
>  static struct option longopts[] = {
> -	{"split", no_argument, NULL, 's'}, 
> -	{"reassemble", no_argument, NULL, 'r'},
> -	{"xen-syms", required_argument, NULL, 'y'},
> -	{"xen-vmcoreinfo", required_argument, NULL, 'z'},
> -	{"xen_phys_start", required_argument, NULL, 'P'},
> -	{"message-level", required_argument, NULL, 'm'},
> -	{"vtop", required_argument, NULL, 'V'},
> -	{"dump-dmesg", no_argument, NULL, 'M'}, 
> -	{"config", required_argument, NULL, 'C'},
> -	{"help", no_argument, NULL, 'h'},
> -	{"diskset", required_argument, NULL, 'k'},
> -	{"non-cyclic", no_argument, NULL, 'Y'},
> -	{"cyclic-buffer", required_argument, NULL, 'Z'},
> -	{"eppic", required_argument, NULL, 'S'},
> +	{"split", no_argument, NULL, OPT_SPLIT}, 
> +	{"reassemble", no_argument, NULL, OPT_REASSEMBLE},
> +	{"xen-syms", required_argument, NULL, OPT_XEN_SYMS},
> +	{"xen-vmcoreinfo", required_argument, NULL, OPT_XEN_VMCOREINFO},
> +	{"xen_phys_start", required_argument, NULL, OPT_XEN_PHYS_START},
> +	{"message-level", required_argument, NULL, OPT_MESSAGE_LEVEL},
> +	{"vtop", required_argument, NULL, OPT_VTOP},
> +	{"dump-dmesg", no_argument, NULL, OPT_DUMP_DMESG}, 
> +	{"config", required_argument, NULL, OPT_CONFIG},
> +	{"help", no_argument, NULL, OPT_HELP},
> +	{"diskset", required_argument, NULL, OPT_DISKSET},
> +	{"non-cyclic", no_argument, NULL, OPT_NON_CYCLIC},
> +	{"cyclic-buffer", required_argument, NULL, OPT_CYCLIC_BUFFER},
> +	{"eppic", required_argument, NULL, OPT_EPPIC},
>  	{0, 0, 0, 0}
>  };
>  
> @@ -8597,29 +8597,29 @@ main(int argc, char *argv[])
>  	
>  	info->block_order = DEFAULT_ORDER;
>  	message_level = DEFAULT_MSG_LEVEL;
> -	while ((opt = getopt_long(argc, argv, "b:cDd:EFfg:hi:lMpRrsvXx:", longopts,
> +	while ((opt = getopt_long(argc, argv, "b:cDd:EFfg:hi:lpRvXx:", longopts,
>  	    NULL)) != -1) {
>  		switch (opt) {
> -		case 'b':
> +		case OPT_BLOCK_ORDER:
>  			info->block_order = atoi(optarg);
>  			break;
> -		case 'C':
> +		case OPT_CONFIG:
>  			info->name_filterconfig = optarg;
>  			break;
> -		case 'c':
> +		case OPT_COMPRESS_ZLIB:
>  			info->flag_compress = DUMP_DH_COMPRESSED_ZLIB;
>  			break;
> -		case 'D':
> +		case OPT_DEBUG:
>  			flag_debug = TRUE;
>  			break;
> -		case 'd':
> +		case OPT_DUMP_LEVEL:
>  			if (!parse_dump_level(optarg))
>  				goto out;
>  			break;
> -		case 'E':
> +		case OPT_ELF_DUMPFILE:
>  			info->flag_elf_dumpfile = 1;
>  			break;
> -		case 'F':
> +		case OPT_FLATTEN:
>  			info->flag_flatten = 1;
>  			/*
>  			 * All messages are output to STDERR because STDOUT is
> @@ -8627,75 +8627,75 @@ main(int argc, char *argv[])
>  			 */
>  			flag_strerr_message = TRUE;
>  			break;
> -		case 'f':
> +		case OPT_FORCE:
>  			info->flag_force = 1;
>  			break;
> -		case 'g':
> +		case OPT_GENERATE_VMCOREINFO:
>  			info->flag_generate_vmcoreinfo = 1;
>  			info->name_vmcoreinfo = optarg;
>  			break;
> -		case 'h':
> +		case OPT_HELP:
>  			info->flag_show_usage = 1;
>  			break;
> -		case 'i':
> +		case OPT_READ_VMCOREINFO:
>  			info->flag_read_vmcoreinfo = 1;
>  			info->name_vmcoreinfo = optarg;
>  			break;
> -		case 'k':
> +		case OPT_DISKSET:
>  			if (!sadump_add_diskset_info(optarg))
>  				goto out;
>  			info->flag_sadump_diskset = 1;
>  			break;
> -		case 'l':
> +		case OPT_COMPRESS_LZO:
>  			info->flag_compress = DUMP_DH_COMPRESSED_LZO;
>  			break;
> -		case 'm':
> +		case OPT_MESSAGE_LEVEL:
>  			message_level = atoi(optarg);
>  			break;
> -		case 'M':
> +		case OPT_DUMP_DMESG:
>  			info->flag_dmesg = 1;
>  			break;
> -		case 'p':
> +		case OPT_COMPRESS_SNAPPY:
>  			info->flag_compress = DUMP_DH_COMPRESSED_SNAPPY;
>  			break;
> -		case 'P':
> +		case OPT_XEN_PHYS_START:
>  			info->xen_phys_start = strtoul(optarg, NULL, 0);
>  			break;
> -		case 'R':
> +		case OPT_REARRANGE:
>  			info->flag_rearrange = 1;
>  			break;
> -		case 's':
> +		case OPT_SPLIT:
>  			info->flag_split = 1;
>  			break;
> -		case 'S':
> +		case OPT_EPPIC:
>  			info->name_eppic_config = optarg;
>  			break;
> -		case 'r':
> +		case OPT_REASSEMBLE:
>  			info->flag_reassemble = 1;
>  			break;
> -		case 'V':
> +		case OPT_VTOP:
>  			info->vaddr_for_vtop = strtoul(optarg, NULL, 0);
>  			break;
> -		case 'v':
> +		case OPT_VERSION:
>  			info->flag_show_version = 1;
>  			break;
> -		case 'X':
> +		case OPT_EXCLUDE_XEN_DOM:
>  			info->flag_exclude_xen_dom = 1;
>  			break;
> -		case 'x':
> +		case OPT_VMLINUX:
>  			info->name_vmlinux = optarg;
>  			break;
> -		case 'y':
> +		case OPT_XEN_SYMS:
>  			info->name_xen_syms = optarg;
>  			break;
> -		case 'Y':
> +		case OPT_NON_CYCLIC:
>  			info->flag_cyclic = FALSE;
>  			break;
> -		case 'z':
> +		case OPT_XEN_VMCOREINFO:
>  			info->flag_read_vmcoreinfo = 1;
>  			info->name_vmcoreinfo = optarg;
>  			break;
> -		case 'Z':
> +		case OPT_CYCLIC_BUFFER:
>  			info->bufsize_cyclic = atoi(optarg);
>  			break;
>  		case '?':
> diff --git a/makedumpfile.h b/makedumpfile.h
> index 2a6b6f2..0a2198e 100644
> --- a/makedumpfile.h
> +++ b/makedumpfile.h
> @@ -1671,6 +1671,41 @@ struct elf_prstatus {
>  #endif
>  
>  /*
> + * Below are options which getopt_long can recognize. From OPT_START options are
> + * non-printable, just used for implementation.
> + */
> +#define OPT_BLOCK_ORDER         'b'
> +#define OPT_COMPRESS_ZLIB       'c'
> +#define OPT_DEBUG               'D'
> +#define OPT_DUMP_LEVEL          'd'
> +#define OPT_ELF_DUMPFILE        'E'
> +#define OPT_FLATTEN             'F'
> +#define OPT_FORCE               'f'
> +#define OPT_GENERATE_VMCOREINFO 'g'
> +#define OPT_HELP                'h'
> +#define OPT_READ_VMCOREINFO     'i'
> +#define OPT_COMPRESS_LZO        'l'
> +#define OPT_COMPRESS_SNAPPY     'p'
> +#define OPT_REARRANGE           'R'
> +#define OPT_VERSION             'v'
> +#define OPT_EXCLUDE_XEN_DOM     'X'
> +#define OPT_VMLINUX             'x'
> +#define OPT_START               256
> +#define OPT_SPLIT               OPT_START+0
> +#define OPT_REASSEMBLE          OPT_START+1
> +#define OPT_XEN_SYMS            OPT_START+2
> +#define OPT_XEN_VMCOREINFO      OPT_START+3
> +#define OPT_XEN_PHYS_START      OPT_START+4
> +#define OPT_MESSAGE_LEVEL       OPT_START+5
> +#define OPT_VTOP                OPT_START+6
> +#define OPT_DUMP_DMESG          OPT_START+7
> +#define OPT_CONFIG              OPT_START+8
> +#define OPT_DISKSET             OPT_START+9
> +#define OPT_NON_CYCLIC          OPT_START+10
> +#define OPT_CYCLIC_BUFFER       OPT_START+11
> +#define OPT_EPPIC               OPT_START+12
> +
> +/*
>   * Function Prototype.
>   */
>  unsigned long long get_num_dumpable_cyclic(void);
> -- 
> 1.8.2.1
> 
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec



More information about the kexec mailing list