[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xl: Don't output a broken result if error occurs in 'xl info'
If error occurs in 'xl info', we'd better output an error message rather than a broken result. Signed-off-by: Yu Zhiguo <yuzg@xxxxxxxxxxxxxx> diff -r c87ec146229a -r 3f97bcb08bbd tools/libxl/xl.c --- a/tools/libxl/xl.c Fri Apr 23 15:04:26 2010 +0100 +++ b/tools/libxl/xl.c Tue Apr 27 01:11:06 2010 +0800 @@ -2642,93 +2642,88 @@ exit(0); } -static void output_xeninfo(void) +static void output_info(struct utsname *utsinfo, struct libxl_physinfo *physinfo, + const libxl_version_info *verinfo) { - const libxl_version_info *info; + unsigned int i; int sched_id; - info = libxl_get_version_info(&ctx); if ((sched_id = libxl_get_sched_id(&ctx)) < 0) { fprintf(stderr, "get_sched_id sysctl failed.\n"); return; } - printf("xen_major : %d\n", info->xen_version_major); - printf("xen_minor : %d\n", info->xen_version_minor); - printf("xen_extra : %s\n", info->xen_version_extra); - printf("xen_caps : %s\n", info->capabilities); + // output utsinfo + printf("host : %s\n", utsinfo->nodename); + printf("release : %s\n", utsinfo->release); + printf("version : %s\n", utsinfo->version); + printf("machine : %s\n", utsinfo->machine); + + // output physinfo + printf("nr_cpus : %d\n", physinfo->nr_cpus); + printf("nr_nodes : %d\n", physinfo->nr_nodes); + printf("cores_per_socket : %d\n", physinfo->cores_per_socket); + printf("threads_per_core : %d\n", physinfo->threads_per_core); + printf("cpu_mhz : %d\n", physinfo->cpu_khz / 1000); + printf("hw_caps : "); + for (i = 0; i < 8; i++) + printf("%08x%c", physinfo->hw_cap[i], i < 7 ? ':' : '\n'); + printf("virt_caps :"); + if (physinfo->phys_cap & XEN_SYSCTL_PHYSCAP_hvm) + printf(" hvm"); + if (physinfo->phys_cap & XEN_SYSCTL_PHYSCAP_hvm_directio) + printf(" hvm_directio"); + printf("\n"); + if (!verinfo) + return; + i = (1 << 20) / verinfo->pagesize; + printf("total_memory : %llu\n", (long long unsigned int) physinfo->total_pages / i); + printf("free_memory : %llu\n", (long long unsigned int) physinfo->free_pages / i); + + // output verinfo + printf("xen_major : %d\n", verinfo->xen_version_major); + printf("xen_minor : %d\n", verinfo->xen_version_minor); + printf("xen_extra : %s\n", verinfo->xen_version_extra); + printf("xen_caps : %s\n", verinfo->capabilities); printf("xen_scheduler : %s\n", sched_id == XEN_SCHEDULER_SEDF ? "sedf" : sched_id == XEN_SCHEDULER_CREDIT ? "credit" : sched_id == XEN_SCHEDULER_CREDIT2 ? "credit2" : "unknown"); - printf("xen_pagesize : %lu\n", info->pagesize); - printf("platform_params : virt_start=0x%lx\n", info->virt_start); - printf("xen_changeset : %s\n", info->changeset); - printf("xen_commandline : %s\n", info->commandline); - printf("cc_compiler : %s\n", info->compiler); - printf("cc_compile_by : %s\n", info->compile_by); - printf("cc_compile_domain : %s\n", info->compile_domain); - printf("cc_compile_date : %s\n", info->compile_date); + printf("xen_pagesize : %lu\n", verinfo->pagesize); + printf("platform_params : virt_start=0x%lx\n", verinfo->virt_start); + printf("xen_changeset : %s\n", verinfo->changeset); + printf("xen_commandline : %s\n", verinfo->commandline); + printf("cc_compiler : %s\n", verinfo->compiler); + printf("cc_compile_by : %s\n", verinfo->compile_by); + printf("cc_compile_domain : %s\n", verinfo->compile_domain); + printf("cc_compile_date : %s\n", verinfo->compile_date); - return; -} - -static void output_nodeinfo(void) -{ - struct utsname utsbuf; - - uname(&utsbuf); - - printf("host : %s\n", utsbuf.nodename); - printf("release : %s\n", utsbuf.release); - printf("version : %s\n", utsbuf.version); - printf("machine : %s\n", utsbuf.machine); - - return; -} - -static void output_physinfo(void) -{ - struct libxl_physinfo info; - const libxl_version_info *vinfo; - unsigned int i; - - if (libxl_get_physinfo(&ctx, &info) != 0) { - fprintf(stderr, "libxl_physinfo failed.\n"); - return; - } - - printf("nr_cpus : %d\n", info.nr_cpus); - printf("nr_nodes : %d\n", info.nr_nodes); - printf("cores_per_socket : %d\n", info.cores_per_socket); - printf("threads_per_core : %d\n", info.threads_per_core); - printf("cpu_mhz : %d\n", info.cpu_khz / 1000); - printf("hw_caps : "); - for (i = 0; i < 8; i++) - printf("%08x%c", info.hw_cap[i], i < 7 ? ':' : '\n'); - printf("virt_caps :"); - if (info.phys_cap & XEN_SYSCTL_PHYSCAP_hvm) - printf(" hvm"); - if (info.phys_cap & XEN_SYSCTL_PHYSCAP_hvm_directio) - printf(" hvm_directio"); - printf("\n"); - vinfo = libxl_get_version_info(&ctx); - i = (1 << 20) / vinfo->pagesize; - printf("total_memory : %lu\n", info.total_pages / i); - printf("free_memory : %lu\n", info.free_pages / i); + printf("xend_config_format : 4\n"); return; } void info(int verbose) { - output_nodeinfo(); + struct utsname utsinfo; + struct libxl_physinfo physinfo; + const libxl_version_info *verinfo; - output_physinfo(); + if (uname(&utsinfo) != 0) { + fprintf(stderr, "cannot get nodeinfo\n"); + return; + } + if (libxl_get_physinfo(&ctx, &physinfo) != 0) { + fprintf(stderr, "libxl_physinfo failed.\n"); + return; + } + verinfo = libxl_get_version_info(&ctx); + if (!verinfo) { + fprintf(stderr, "libxl_get_version_info failed.\n"); + return; + } - output_xeninfo(); - - printf("xend_config_format : 4\n"); + output_info(&utsinfo, &physinfo, verinfo); return; } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |