[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 07/11] xl: Return error codes for pci* commands
Add return codes for pci-detach, pci-attach, pci-asssignable-add, and pci-assignable-remove. Returning error codes makes it easier for shell scripts to tell if a command has failed or succeeded. NB this violates the CODING_STYLE preference for not initializing the return-value variable at declaration; but in these cases, having a "goto out" that jumped over nothing but an "r = 0" seemed a bit pointless. Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx> Signed-off-by: Paulina Szubarczyk <paulinaszubarczyk@xxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> CC: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> CC: Dario Faggioli <dario.faggioli@xxxxxxxxxx> CC: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/libxl/xl_cmdimpl.c | 78 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 22 deletions(-) diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index e93808e..c70fd70 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -3514,10 +3514,11 @@ int main_pcilist(int argc, char **argv) return 0; } -static void pcidetach(uint32_t domid, const char *bdf, int force) +static int pcidetach(uint32_t domid, const char *bdf, int force) { libxl_device_pci pcidev; XLU_Config *config; + int r = 0; libxl_device_pci_init(&pcidev); @@ -3526,15 +3527,20 @@ static void pcidetach(uint32_t domid, const char *bdf, int force) if (xlu_pci_parse_bdf(config, &pcidev, bdf)) { fprintf(stderr, "pci-detach: malformed BDF specification \"%s\"\n", bdf); - exit(2); + exit(EXIT_FAILURE); + } + if (force) { + if (libxl_device_pci_destroy(ctx, domid, &pcidev, 0)) + r = 1; + } else { + if (libxl_device_pci_remove(ctx, domid, &pcidev, 0)) + r = 1; } - if (force) - libxl_device_pci_destroy(ctx, domid, &pcidev, 0); - else - libxl_device_pci_remove(ctx, domid, &pcidev, 0); libxl_device_pci_dispose(&pcidev); xlu_cfg_destroy(config); + + return r; } int main_pcidetach(int argc, char **argv) @@ -3553,13 +3559,18 @@ int main_pcidetach(int argc, char **argv) domid = find_domain(argv[optind]); bdf = argv[optind + 1]; - pcidetach(domid, bdf, force); - return 0; + if (pcidetach(domid, bdf, force)) { + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; } -static void pciattach(uint32_t domid, const char *bdf, const char *vs) + +static int pciattach(uint32_t domid, const char *bdf, const char *vs) { libxl_device_pci pcidev; XLU_Config *config; + int r = 0; libxl_device_pci_init(&pcidev); @@ -3568,12 +3579,16 @@ static void pciattach(uint32_t domid, const char *bdf, const char *vs) if (xlu_pci_parse_bdf(config, &pcidev, bdf)) { fprintf(stderr, "pci-attach: malformed BDF specification \"%s\"\n", bdf); - exit(2); + exit(EXIT_FAILURE); } - libxl_device_pci_add(ctx, domid, &pcidev, 0); + + if (libxl_device_pci_add(ctx, domid, &pcidev, 0)) + r = 1; libxl_device_pci_dispose(&pcidev); xlu_cfg_destroy(config); + + return 1; } int main_pciattach(int argc, char **argv) @@ -3592,8 +3607,11 @@ int main_pciattach(int argc, char **argv) if (optind + 1 < argc) vs = argv[optind + 2]; - pciattach(domid, bdf, vs); - return 0; + if (pciattach(domid, bdf, vs)) { + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; } static void pciassignable_list(void) @@ -3625,10 +3643,11 @@ int main_pciassignable_list(int argc, char **argv) return 0; } -static void pciassignable_add(const char *bdf, int rebind) +static int pciassignable_add(const char *bdf, int rebind) { libxl_device_pci pcidev; XLU_Config *config; + int r = 0; libxl_device_pci_init(&pcidev); @@ -3637,12 +3656,16 @@ static void pciassignable_add(const char *bdf, int rebind) if (xlu_pci_parse_bdf(config, &pcidev, bdf)) { fprintf(stderr, "pci-assignable-add: malformed BDF specification \"%s\"\n", bdf); - exit(2); + exit(EXIT_FAILURE); } - libxl_device_pci_assignable_add(ctx, &pcidev, rebind); + + if (libxl_device_pci_assignable_add(ctx, &pcidev, rebind)) + r = 1; libxl_device_pci_dispose(&pcidev); xlu_cfg_destroy(config); + + return r; } int main_pciassignable_add(int argc, char **argv) @@ -3656,14 +3679,18 @@ int main_pciassignable_add(int argc, char **argv) bdf = argv[optind]; - pciassignable_add(bdf, 1); - return 0; + if (pciassignable_add(bdf, 1)) { + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; } -static void pciassignable_remove(const char *bdf, int rebind) +static int pciassignable_remove(const char *bdf, int rebind) { libxl_device_pci pcidev; XLU_Config *config; + int r = 0; libxl_device_pci_init(&pcidev); @@ -3674,10 +3701,14 @@ static void pciassignable_remove(const char *bdf, int rebind) fprintf(stderr, "pci-assignable-remove: malformed BDF specification \"%s\"\n", bdf); exit(2); } - libxl_device_pci_assignable_remove(ctx, &pcidev, rebind); + + if (libxl_device_pci_assignable_remove(ctx, &pcidev, rebind)) + r = 1; libxl_device_pci_dispose(&pcidev); xlu_cfg_destroy(config); + + return r; } int main_pciassignable_remove(int argc, char **argv) @@ -3694,8 +3725,11 @@ int main_pciassignable_remove(int argc, char **argv) bdf = argv[optind]; - pciassignable_remove(bdf, rebind); - return 0; + if (pciassignable_remove(bdf, rebind)) { + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; } static void pause_domain(uint32_t domid) -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |