/* * (C) 2011 Dave Jones. * * Licensed under the terms of the GNU GPL License version 2. */ #include #include #include #include #include "x86info.h" unsigned int show_apic = 0; unsigned int show_bench = 0; unsigned int show_bios = 0; unsigned int show_machine_check = 0; unsigned int show_bugs = 0; unsigned int show_cacheinfo = 0; unsigned int show_connector = 0; unsigned int show_eblcr = 0; unsigned int show_msr = 0; unsigned int show_microcode = 0; unsigned int show_mtrr = 0; unsigned int show_pm = 0; unsigned int show_cpuid = 0; unsigned int show_urls = 0; unsigned int show_mptable = 0; unsigned int show_feature_flags = 0; unsigned int show_MHz = 0; unsigned int show_addr_sizes = 0; unsigned int all_cpus = 0; unsigned int debug = 0; unsigned int verbose = 0; unsigned int need_root = 0; static void usage(char *programname) { printf("Usage: %s []\n\ -a, --all\n\ --all-cpus\n\ --addr\n\ --apic\n\ --bench\n\ --bios\n\ --bugs\n\ -c, --cache\n\ --connector\n\ --debug\n\ -f, --flags\n\ -mce, --show-machine-check\n\ -mhz, --mhz\n\ --microcode\n\ -mp, --mptable\n\ -m, --msr\n\ --mult\n\ --mtrr\n\ --pm\n\ -r, --registers\n\ -u, --urls\n\ -v, --verbose\n\ \n", programname); exit (0); } void parse_command_line(int argc, char **argv) { char **argp, *arg; for (argp = argv+1; argp <= argv + argc && (arg = *argp); argp++) { if ((!strcmp(arg, "-a") || !strcmp(arg, "--all"))) { if (user_is_root) { show_apic = 1; show_bios = 1; show_msr = 1; show_microcode = 1; need_root = 1; show_mptable =1; show_mtrr = 1; show_machine_check = 1; show_eblcr =1; } show_addr_sizes = 1; show_bugs = 1; show_cacheinfo = 1; show_connector = 1; show_feature_flags = 1; show_MHz = 1; show_pm = 1; show_cpuid = 1; show_urls = 1; } if (!strcmp(arg, "--all-cpus")) all_cpus = 1; if (!strcmp(arg, "--addr")) show_addr_sizes = 1; if (!strcmp(arg, "--apic")) { need_root = 1; show_apic = 1; } if (!strcmp(arg, "--bench")) show_bench = 1; if (!strcmp(arg, "--bios")) { need_root = 1; show_bios = 1; } if (!strcmp(arg, "--bugs")) show_bugs = 1; if ((!strcmp(arg, "-c") || !strcmp(arg, "--cache"))) show_cacheinfo = 1; if (!strcmp(arg, "--connector")) show_connector = 1; if (!strcmp(arg, "--debug")) debug = 1; if ((!strcmp(arg, "-f") || !strcmp(arg, "--flags"))) show_feature_flags = 1; if ((!strcmp(arg, "-m") || !strcmp(arg, "--msr"))) { need_root = 1; show_msr = 1; } if (!strcmp(arg, "--microcode")) { need_root = 1; show_microcode = 1; } if ((!strcmp(arg, "-mhz") || !strcmp(arg, "--mhz"))) show_MHz = 1; if ((!strcmp(arg, "-mp") || !strcmp(arg, "--mptable"))) { need_root = 1; show_mptable = 1; } if (!strcmp(arg, "--mtrr")) { need_root = 1; show_mtrr = 1; } if (!strcmp(arg, "--mult")) { need_root = 1; show_eblcr = 1; } if (!strcmp(arg, "--pm")) show_pm = 1; if ((!strcmp(arg, "-r") || !strcmp(arg, "--raw-cpuid"))) show_cpuid = 1; if ((!strcmp(arg, "-mce") || !strcmp(arg, "--show-machine-check"))) { need_root = 1; show_machine_check = 1; } if ((!strcmp(arg, "-u") || !strcmp(arg, "--urls"))) show_urls = 1; if ((!strcmp(arg, "-v") || !strcmp(arg, "--verbose"))) verbose = 1; if ((!strcmp(arg, "?") || !strcmp(arg, "--help"))) usage(argv[0]); } }