[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH V9 06/12] remus: implement the API for checkpoint
--- tools/libxl/libxl_internal.h | 3 +++ tools/libxl/libxl_remus_device.c | 54 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 421ae24..14094aa 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -2485,6 +2485,9 @@ _hidden void libxl__remus_teardown_done(libxl__egc *egc, _hidden void libxl__remus_device_teardown(libxl__egc *egc, libxl__domain_suspend_state *dss); +_hidden int libxl__remus_device_postsuspend(libxl__remus_state *remus_state); +_hidden int libxl__remus_device_preresume(libxl__remus_state *remus_state); +_hidden int libxl__remus_device_commit(libxl__remus_state *remus_state); struct libxl__domain_suspend_state { /* set by caller of libxl__domain_suspend */ diff --git a/tools/libxl/libxl_remus_device.c b/tools/libxl/libxl_remus_device.c index 6e7d0d5..bfe6080 100644 --- a/tools/libxl/libxl_remus_device.c +++ b/tools/libxl/libxl_remus_device.c @@ -39,6 +39,60 @@ typedef struct libxl__remus_device_state { static libxl__remus_device_type *device_types[] = { }; +int libxl__remus_device_postsuspend(libxl__remus_state *remus_state) +{ + int i; + int rc = 0; + libxl__remus_device *remus_dev; + + /* Convenience aliases */ + libxl__remus_device_state *dev_state = remus_state->device_state; + + for (i = 0; rc == 0 && i < dev_state->num_devices; i++) { + remus_dev = dev_state->dev[i]; + if (remus_dev->dev_type->postsuspend) + rc = remus_dev->dev_type->postsuspend(remus_dev); + } + + return rc; +} + +int libxl__remus_device_preresume(libxl__remus_state *remus_state) +{ + int i; + int rc = 0; + libxl__remus_device *remus_dev; + + /* Convenience aliases */ + libxl__remus_device_state *dev_state = remus_state->device_state; + + for (i = 0; rc == 0 && i < dev_state->num_devices; i++) { + remus_dev = dev_state->dev[i]; + if (remus_dev->dev_type->preresume) + rc = remus_dev->dev_type->preresume(remus_dev); + } + + return rc; +} + +int libxl__remus_device_commit(libxl__remus_state *remus_state) +{ + int i; + int rc = 0; + libxl__remus_device *remus_dev; + + /* Convenience aliases */ + libxl__remus_device_state *dev_state = remus_state->device_state; + + for (i = 0; rc == 0 && i < dev_state->num_devices; i++) { + remus_dev = dev_state->dev[i]; + if (remus_dev->dev_type->commit) + rc = remus_dev->dev_type->commit(remus_dev); + } + + return rc; +} + static void init_async_exec(libxl__remus_device_state *dev_state, void (*finish_cb)(void *opaque, int status)) { -- 1.8.3.2 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |