diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-08-15 19:04:43 +0100 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-08-15 19:04:43 +0100 |
commit | d0ed0b289c9d86f395e3e242c964447e1bfa775e (patch) | |
tree | e9d21822ff41b54b8eb8f768dd18a7f5b4ea422b /tools/xcutils/xc_save.c | |
parent | 835d343163ca88a2d58d96680a43b865f143b33c (diff) | |
download | xen-d0ed0b289c9d86f395e3e242c964447e1bfa775e.tar.gz xen-d0ed0b289c9d86f395e3e242c964447e1bfa775e.tar.bz2 xen-d0ed0b289c9d86f395e3e242c964447e1bfa775e.zip |
[XEND] xc_save/xc_restore open the libxc interface independently
of their parent. This is required now that the interface fd is
marked for close-on-exec.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'tools/xcutils/xc_save.c')
-rw-r--r-- | tools/xcutils/xc_save.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/tools/xcutils/xc_save.c b/tools/xcutils/xc_save.c index 44c4701379..c9be3454d4 100644 --- a/tools/xcutils/xc_save.c +++ b/tools/xcutils/xc_save.c @@ -13,9 +13,9 @@ #include <string.h> #include <stdio.h> +#include <xenctrl.h> #include <xenguest.h> - /** * Issue a suspend request through stdout, and receive the acknowledgement * from stdin. This is handled by XendCheckpoint in the Python layer. @@ -36,16 +36,24 @@ int main(int argc, char **argv) { unsigned int xc_fd, io_fd, domid, maxit, max_f, flags; + int ret; + + if (argc != 6) + errx(1, "usage: %s iofd domid maxit maxf flags", argv[0]); + + xc_fd = xc_interface_open(); + if (xc_fd < 0) + errx(1, "failed to open control interface"); + + io_fd = atoi(argv[1]); + domid = atoi(argv[2]); + maxit = atoi(argv[3]); + max_f = atoi(argv[4]); + flags = atoi(argv[5]); - if (argc != 7) - errx(1, "usage: %s xcfd iofd domid maxit maxf flags", argv[0]); + ret = xc_linux_save(xc_fd, io_fd, domid, maxit, max_f, flags, &suspend); - xc_fd = atoi(argv[1]); - io_fd = atoi(argv[2]); - domid = atoi(argv[3]); - maxit = atoi(argv[4]); - max_f = atoi(argv[5]); - flags = atoi(argv[6]); + xc_interface_close(xc_fd); - return xc_linux_save(xc_fd, io_fd, domid, maxit, max_f, flags, &suspend); + return ret; } |