Ian Jackson
2010-Nov-22 12:47 UTC
[Xen-devel] [PATCH] tools/xl: show shutdown reason code, improve xl list heading
Previously, xl list would not reveal the shutdown reason code unless it was SHUTDOWN_crashed. This is unfortunate; it makes it hard for scripts which use xl to tell what''s going on. In this patch: * xl list shows the reason code as a single letter if it is any of the defined values from sched.h: - poweroff or domain not shut down r reboot s suspend c crashed w watchdog This is not 100% backward-compatible with xm but I think it''s a justifiable improvement. It would be nice to make the same change to xm. * xl list -v shows the full numeric reason code in hex, or "-" if the domain is not shut down. * xl list -v has column headings for the UUID and numeric reason code. The heading for the reason code overlaps with the UUID a bit. These headings are intended for human readers; scripts can parse the output by breaking on whitespace. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> diff -r 899131a8f9d2 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Mon Nov 22 08:29:03 2010 +0000 +++ b/tools/libxl/xl_cmdimpl.c Mon Nov 22 12:41:35 2010 +0000 @@ -2477,11 +2477,16 @@ static void list_domains(int verbose, co static void list_domains(int verbose, const libxl_dominfo *info, int nb_domain) { int i; - - printf("Name ID Mem VCPUs\tState\tTime(s)\n"); + static const char shutdown_reason_letters[]= "-rscw"; + + printf("Name ID Mem VCPUs\tState\tTime(s)"); + if (verbose) printf(" UUID Reason-Code"); + printf("\n"); for (i = 0; i < nb_domain; i++) { char *domname; + unsigned shutdown_reason; domname = libxl_domid_to_name(&ctx, info[i].domid); + shutdown_reason = info[i].shutdown ? info[i].shutdown_reason : 0; printf("%-40s %5d %5lu %5d %c%c%c%c%c%c %8.1f", domname, info[i].domid, @@ -2491,12 +2496,17 @@ static void list_domains(int verbose, co info[i].blocked ? ''b'' : ''-'', info[i].paused ? ''p'' : ''-'', info[i].shutdown ? ''s'' : ''-'', - info[i].shutdown_reason == SHUTDOWN_crash ? ''c'' : ''-'', + (shutdown_reason >= 0 && + shutdown_reason < sizeof(shutdown_reason_letters)-1 + ? shutdown_reason_letters[shutdown_reason] : ''?''), info[i].dying ? ''d'' : ''-'', ((float)info[i].cpu_time / 1e9)); free(domname); - if (verbose) + if (verbose) { printf(" " LIBXL_UUID_FMT, LIBXL_UUID_BYTES(info[i].uuid)); + if (info[i].shutdown) printf(" %8x", shutdown_reason); + else printf(" %8s", "-"); + } putchar(''\n''); } } _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel