}
int libxl_domain_core_dump(libxl_ctx *ctx, uint32_t domid,
- const char *filename)
+ const char *filename,
+ const libxl_asyncop_how *ao_how)
{
- int ret;
+ AO_CREATE(ctx, domid, ao_how);
+ int ret, rc;
+
ret = xc_domain_dumpcore(ctx->xch, domid, filename);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "core dumping domain %d to %s",
domid, filename);
- return ERROR_FAIL;
+ rc = ERROR_FAIL;
+ goto out;
}
- return 0;
+
+ rc = 0;
+out:
+
+ libxl__ao_complete(egc, ao, rc);
+
+ return AO_INPROGRESS;
}
int libxl_domain_unpause(libxl_ctx *ctx, uint32_t domid)
int libxl_domain_pause(libxl_ctx *ctx, uint32_t domid);
int libxl_domain_unpause(libxl_ctx *ctx, uint32_t domid);
-int libxl_domain_core_dump(libxl_ctx *ctx, uint32_t domid, const char *filename);
+int libxl_domain_core_dump(libxl_ctx *ctx, uint32_t domid,
+ const char *filename,
+ const libxl_asyncop_how *ao_how);
int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t domid, uint32_t target_memkb);
int libxl_set_memory_target(libxl_ctx *ctx, uint32_t domid, int32_t target_memkb, int relative, int enforce);
LOG("failed to construct core dump path");
} else {
LOG("dumping core to %s", corefile);
- rc=libxl_domain_core_dump(ctx, domid, corefile);
+ rc=libxl_domain_core_dump(ctx, domid, corefile, NULL);
if (rc) LOG("core dump failed (rc=%d).", rc);
}
/* No point crying over spilled milk, continue on failure. */
{
int rc;
find_domain(domain_spec);
- rc=libxl_domain_core_dump(ctx, domid, filename);
+ rc=libxl_domain_core_dump(ctx, domid, filename, NULL);
if (rc) { fprintf(stderr,"core dump failed (rc=%d)\n",rc);exit(-1); }
}