@@ -299,6 +299,14 @@ typedef enum {
DOMAIN_RESTART_SOFT_RESET, /* Soft reset should be performed */
} domain_restart_type;
+extern void dump_by_config(enum output_format output_format,
+ FILE *fh,
+ const libxl_domain_config *d_config,
+ int domid);
+extern void dump_by_dominfo_list(enum output_format output_format,
+ FILE *fh,
+ const libxl_dominfo info[],
+ int nb_domain);
extern void printf_info_sexp(int domid, const libxl_domain_config *d_config, FILE *fh);
extern void apply_global_affinity_masks(libxl_domain_type type,
libxl_bitmap *vcpu_affinity_array,
@@ -94,12 +94,10 @@ out:
return s;
}
-void printf_info(enum output_format output_format,
- int domid,
- libxl_domain_config *d_config, FILE *fh);
-void printf_info(enum output_format output_format,
- int domid,
- libxl_domain_config *d_config, FILE *fh)
+void dump_by_config(enum output_format output_format,
+ FILE *fh,
+ const libxl_domain_config *const d_config,
+ int domid)
{
if (output_format == OUTPUT_FORMAT_SXP)
return printf_info_sexp(domid, d_config, fh);
@@ -438,7 +436,10 @@ static void list_domains(bool verbose, bool context, bool claim, bool numa,
libxl_physinfo_dispose(&physinfo);
}
-static void list_domains_details(const libxl_dominfo *info, int nb_domain)
+void dump_by_dominfo_list(enum output_format output_format,
+ FILE *fh,
+ const libxl_dominfo info[],
+ int nb_domain)
{
libxl_domain_config d_config;
@@ -449,7 +450,7 @@ static void list_domains_details(const libxl_dominfo *info, int nb_domain)
const char *buf;
libxl_yajl_length yajl_len = 0;
- if (default_output_format == OUTPUT_FORMAT_JSON) {
+ if (output_format == OUTPUT_FORMAT_JSON) {
hand = libxl_yajl_gen_alloc(NULL);
if (!hand) {
fprintf(stderr, "unable to allocate JSON generator\n");
@@ -468,16 +469,16 @@ static void list_domains_details(const libxl_dominfo *info, int nb_domain)
&d_config, NULL);
if (rc)
continue;
- if (default_output_format == OUTPUT_FORMAT_JSON)
+ if (output_format == OUTPUT_FORMAT_JSON)
s = printf_info_one_json(hand, info[i].domid, &d_config);
else
- printf_info_sexp(info[i].domid, &d_config, stdout);
+ printf_info_sexp(info[i].domid, &d_config, fh);
libxl_domain_config_dispose(&d_config);
if (s != yajl_gen_status_ok)
goto out;
}
- if (default_output_format == OUTPUT_FORMAT_JSON) {
+ if (output_format == OUTPUT_FORMAT_JSON) {
s = yajl_gen_array_close(hand);
if (s != yajl_gen_status_ok)
goto out;
@@ -486,11 +487,12 @@ static void list_domains_details(const libxl_dominfo *info, int nb_domain)
if (s != yajl_gen_status_ok)
goto out;
- puts(buf);
+ fputs(buf, fh);
+ fputc('\n', fh);
}
out:
- if (default_output_format == OUTPUT_FORMAT_JSON) {
+ if (output_format == OUTPUT_FORMAT_JSON) {
yajl_gen_free(hand);
if (s != yajl_gen_status_ok)
fprintf(stderr,
@@ -567,7 +569,7 @@ int main_list(int argc, char **argv)
}
if (details)
- list_domains_details(info, nb_domain);
+ dump_by_dominfo_list(default_output_format, stdout, info, nb_domain);
else
list_domains(verbose, context, false /* claim */, numa, cpupool,
info, nb_domain);
@@ -256,9 +256,6 @@ int main_dump_core(int argc, char **argv)
return EXIT_SUCCESS;
}
-extern void printf_info(enum output_format output_format,
- int domid,
- libxl_domain_config *d_config, FILE *fh);
int main_config_update(int argc, char **argv)
{
uint32_t domid;
@@ -344,7 +341,7 @@ int main_config_update(int argc, char **argv)
parse_config_data(filename, config_data, config_len, &d_config);
if (debug || dryrun_only)
- printf_info(default_output_format, -1, &d_config, stdout);
+ dump_by_config(default_output_format, stdout, &d_config, -1);
if (!dryrun_only) {
fprintf(stderr, "setting dom%u configuration\n", domid);
printf_info()/list_domains_details() had been serving fairly similar purposes. Increase their consistency (add file-handle and output_format arguments to list_domains_details(), reorder arguments) and then rename to better reflect their functionality. Both were simply outputting full domain information. As this is more of a dump operation, "dump" is a better name. Signed-off-by: Elliott Mitchell <ehem+xen@m5p.com> --- tools/xl/xl.h | 8 ++++++++ tools/xl/xl_info.c | 30 ++++++++++++++++-------------- tools/xl/xl_misc.c | 5 +---- 3 files changed, 25 insertions(+), 18 deletions(-)