[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xl cpupool-list: add option to list domains
It is rather complicated to obtain the cpupool a domain lives in. Add an option -d (or --domains) to list all domains running in a cpupool. Signed-off-by: Juergen Gross <juergen.gross@xxxxxxxxxxxxxx> --- docs/man/xl.pod.1 | 5 ++++- tools/libxl/xl_cmdimpl.c | 47 ++++++++++++++++++++++++++++++++++++++------- tools/libxl/xl_cmdtable.c | 5 +++-- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1 index e7b9de2..547af6d 100644 --- a/docs/man/xl.pod.1 +++ b/docs/man/xl.pod.1 @@ -1019,10 +1019,13 @@ Use the given configuration file. =back -=item B<cpupool-list> [I<-c|--cpus>] [I<cpu-pool>] +=item B<cpupool-list> [I<-c|--cpus>] [I<-d|--domains>] [I<cpu-pool>] List CPU pools on the host. If I<-c> is specified, B<xl> prints a list of CPUs used by I<cpu-pool>. +If I<-d> is specified, B<xl> prints a list of domains in I<cpu-pool> instead +of the domain count. +I<-c> and I<-d> are mutually exclusive. =item B<cpupool-destroy> I<cpu-pool> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index aff6f90..c7b9fce 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -6754,23 +6754,32 @@ int main_cpupoollist(int argc, char **argv) int opt; static struct option opts[] = { {"cpus", 0, 0, 'c'}, + {"domains", 0, 0, 'd'}, COMMON_LONG_OPTS, {0, 0, 0, 0} }; - int opt_cpus = 0; + int opt_cpus = 0, opt_domains = 0; const char *pool = NULL; libxl_cpupoolinfo *poolinfo; - int n_pools, p, c, n; + libxl_dominfo *dominfo = NULL; + int n_pools, n_domains, p, c, n; uint32_t poolid; char *name; int ret = 0; - SWITCH_FOREACH_OPT(opt, "hc", opts, "cpupool-list", 0) { + SWITCH_FOREACH_OPT(opt, "hcd", opts, "cpupool-list", 0) { case 'c': opt_cpus = 1; break; + case 'd': + opt_domains = 1; + break; } + if (opt_cpus && opt_domains) { + fprintf(stderr, "specifying both cpu- and domain-list not allowed\n"); + return -ERROR_FAIL; + } if (optind < argc) { pool = argv[optind]; if (libxl_name_to_cpupoolid(ctx, pool, &poolid)) { @@ -6784,12 +6793,21 @@ int main_cpupoollist(int argc, char **argv) fprintf(stderr, "error getting cpupool info\n"); return -ERROR_NOMEM; } + if (opt_domains) { + dominfo = libxl_list_domain(ctx, &n_domains); + if (!dominfo) { + fprintf(stderr, "error getting domain info\n"); + ret = -ERROR_NOMEM; + goto out; + } + } printf("%-19s", "Name"); if (opt_cpus) printf("CPU list\n"); else - printf("CPUs Sched Active Domain count\n"); + printf("CPUs Sched Active Domain %s\n", + opt_domains ? "list" : "count"); for (p = 0; p < n_pools; p++) { if (!ret && (!pool || (poolinfo[p].poolid == poolid))) { @@ -6808,15 +6826,30 @@ int main_cpupoollist(int argc, char **argv) n++; } if (!opt_cpus) { - printf("%3d %9s y %4d", n, - libxl_scheduler_to_string(poolinfo[p].sched), - poolinfo[p].n_dom); + printf("%3d %9s y ", n, + libxl_scheduler_to_string(poolinfo[p].sched)); + if (opt_domains) { + c = 0; + for (n = 0; n < n_domains; n++) { + if (poolinfo[p].poolid == dominfo[n].cpupool) { + name = libxl_domid_to_name(ctx, dominfo[n].domid); + printf("%s%s", c ? ", " : "", name); + free(name); + c++; + } + } + } + else + printf(" %4d", poolinfo[p].n_dom); } printf("\n"); } } } + if (dominfo) + libxl_dominfo_list_free(dominfo, n_domains); +out: libxl_cpupoolinfo_list_free(poolinfo, n_pools); return ret; diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c index ebe0220..8a52d26 100644 --- a/tools/libxl/xl_cmdtable.c +++ b/tools/libxl/xl_cmdtable.c @@ -426,8 +426,9 @@ struct cmd_spec cmd_table[] = { { "cpupool-list", &main_cpupoollist, 0, 0, "List CPU pools on host", - "[-c|--cpus] [<CPU Pool>]", - "-c, --cpus Output list of CPUs used by a pool" + "[-c|--cpus] [-d|--domains] [<CPU Pool>]", + "-c, --cpus Output list of CPUs used by a pool\n" + "-d, --domains Output list of domains running in a pool" }, { "cpupool-destroy", &main_cpupooldestroy, 0, 1, -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |