[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XEN][RFC PATCH v2 12/12] tools/xl: Add new xl command overlay
Signed-off-by: Vikram Garhwal <fnu.vikram@xxxxxxxxxx> --- tools/xl/xl.h | 8 ++++++++ tools/xl/xl_cmdtable.c | 8 ++++++++ tools/xl/xl_vmcontrol.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) diff --git a/tools/xl/xl.h b/tools/xl/xl.h index 7e23f30..2ee75a0 100644 --- a/tools/xl/xl.h +++ b/tools/xl/xl.h @@ -98,6 +98,11 @@ struct save_file_header { #define SAVEFILE_BYTEORDER_VALUE ((uint32_t)0x01020304UL) +#if defined (CONFIG_OVERLAY_DTB) +#define XL_DT_OVERLAY_ADD 1 +#define XL_DT_OVERLAY_REMOVE 2 +#endif + void save_domain_core_begin(uint32_t domid, int preserve_domid, const char *override_config_file, @@ -140,6 +145,9 @@ int main_shutdown(int argc, char **argv); int main_reboot(int argc, char **argv); int main_list(int argc, char **argv); int main_vm_list(int argc, char **argv); +#if defined (CONFIG_OVERLAY_DTB) +int main_dt_overlay(int argc, char **argv); +#endif int main_create(int argc, char **argv); int main_config_update(int argc, char **argv); int main_button_press(int argc, char **argv); diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c index 661323d..dd43920 100644 --- a/tools/xl/xl_cmdtable.c +++ b/tools/xl/xl_cmdtable.c @@ -20,6 +20,14 @@ #include "xl.h" const struct cmd_spec cmd_table[] = { +#if defined (CONFIG_OVERLAY_DTB) + { "overlay", + &main_dt_overlay, 1, 1, + "Add/Remove a device tree overlay", + "add/remove <.dtbo>" + "-h print this help\n" + }, +#endif { "create", &main_create, 1, 1, "Create a domain from config file <filename>", diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c index 435155a..88c8e66 100644 --- a/tools/xl/xl_vmcontrol.c +++ b/tools/xl/xl_vmcontrol.c @@ -1262,6 +1262,53 @@ int main_create(int argc, char **argv) return 0; } +#if defined (CONFIG_OVERLAY_DTB) +int main_dt_overlay(int argc, char **argv) +{ + const char *overlay_ops = argv[1]; + const char *overlay_config_file = argv[2]; + void *overlay_dtb = NULL; + int rc; + uint8_t op; + int overlay_dtb_size = 0; + + if (overlay_ops == NULL) { + fprintf(stderr, "No overlay operation mode provided\n"); + return ERROR_FAIL; + } + + if (strcmp(overlay_ops, "add") == 0) + op = XL_DT_OVERLAY_ADD; + else if (strcmp(overlay_ops, "remove") == 0) + op = XL_DT_OVERLAY_REMOVE; + else { + fprintf(stderr, "Invalid dt overlay operation\n"); + return ERROR_FAIL; + } + + if (overlay_config_file) { + rc = libxl_read_file_contents(ctx, overlay_config_file, + &overlay_dtb, &overlay_dtb_size); + + if (rc) { + fprintf(stderr, "failed to read the overlay device tree file %s\n", + overlay_config_file); + free(overlay_dtb); + return ERROR_FAIL; + } + } else { + fprintf(stderr, "overlay dtbo file not provided\n"); + return ERROR_FAIL; + } + + rc = libxl_dt_overlay(ctx, overlay_dtb, overlay_dtb_size, op); + if (rc) + fprintf(stderr, "Overlay operation failed\n"); + + free(overlay_dtb); + return rc; +} +#endif /* * Local variables: * mode: C -- 2.7.4
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |