libxl_device_model_version_to_string(b_info->device_model_version));
}
+void libxl__domain_build_state_init(libxl__domain_build_state *state)
+{
+}
+
+void libxl__domain_build_state_dispose(libxl__domain_build_state *state)
+{
+ libxl__file_reference_unmap(&state->pv_kernel);
+ libxl__file_reference_unmap(&state->pv_ramdisk);
+}
+
/*----- main domain creation -----*/
/* We have a linear control flow; only one event callback is
const int restore_fd = dcs->restore_fd;
domid = dcs->domid_soft_reset;
+ libxl__domain_build_state_init(&dcs->build_state);
if (d_config->c_info.ssid_label) {
char *s = d_config->c_info.ssid_label;
libxl_domain_config *const d_config = dcs->guest_config;
libxl_domain_config *d_config_saved = &dcs->guest_config_saved;
- libxl__file_reference_unmap(&dcs->build_state.pv_kernel);
- libxl__file_reference_unmap(&dcs->build_state.pv_ramdisk);
+ libxl__domain_build_state_dispose(&dcs->build_state);
if (!rc && d_config->b_info.exec_ssidref)
rc = xc_flask_relabel_domain(CTX->xch, dcs->guest_domid, d_config->b_info.exec_ssidref);
libxl__domain_build_state *const d_state = sdss->dm.build_state;
libxl__domain_build_state *const stubdom_state = &sdss->dm_state;
+ libxl__domain_build_state_init(stubdom_state);
+
if (guest_config->b_info.device_model_version !=
LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL) {
ret = ERROR_INVAL;
if (strcmp(p, "running"))
return;
out:
+ libxl__domain_build_state_dispose(&sdss->dm_state);
libxl__xswait_stop(gc, xswait);
sdss->callback(egc, &sdss->dm, rc);
}
uint32_t clock_frequency;
} libxl__domain_build_state;
+_hidden void libxl__domain_build_state_init(libxl__domain_build_state *s);
+_hidden void libxl__domain_build_state_dispose(libxl__domain_build_state *s);
+
_hidden int libxl__build_pre(libxl__gc *gc, uint32_t domid,
libxl_domain_config * const d_config,
libxl__domain_build_state *state);