aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxen/src/xen_vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/libxen/src/xen_vm.c')
-rw-r--r--tools/libxen/src/xen_vm.c350
1 files changed, 177 insertions, 173 deletions
diff --git a/tools/libxen/src/xen_vm.c b/tools/libxen/src/xen_vm.c
index 35cf104abf..6cbc3670b0 100644
--- a/tools/libxen/src/xen_vm.c
+++ b/tools/libxen/src/xen_vm.c
@@ -22,8 +22,7 @@
#include "xen_common.h"
#include "xen_console.h"
-#include "xen_cpu_feature.h"
-#include "xen_cpu_feature_internal.h"
+#include "xen_crashdump.h"
#include "xen_host.h"
#include "xen_int_float_map.h"
#include "xen_internal.h"
@@ -31,8 +30,10 @@
#include "xen_on_normal_exit_internal.h"
#include "xen_string_string_map.h"
#include "xen_vbd.h"
+#include "xen_vdi.h"
#include "xen_vif.h"
#include "xen_vm.h"
+#include "xen_vm_metrics.h"
#include "xen_vm_power_state_internal.h"
#include "xen_vtpm.h"
@@ -69,6 +70,9 @@ static const struct_member xen_vm_record_struct_members[] =
{ .key = "auto_power_on",
.type = &abstract_type_bool,
.offset = offsetof(xen_vm_record, auto_power_on) },
+ { .key = "suspend_VDI",
+ .type = &abstract_type_ref,
+ .offset = offsetof(xen_vm_record, suspend_vdi) },
{ .key = "resident_on",
.type = &abstract_type_ref,
.offset = offsetof(xen_vm_record, resident_on) },
@@ -78,9 +82,6 @@ static const struct_member xen_vm_record_struct_members[] =
{ .key = "memory_dynamic_max",
.type = &abstract_type_int,
.offset = offsetof(xen_vm_record, memory_dynamic_max) },
- { .key = "memory_actual",
- .type = &abstract_type_int,
- .offset = offsetof(xen_vm_record, memory_actual) },
{ .key = "memory_dynamic_min",
.type = &abstract_type_int,
.offset = offsetof(xen_vm_record, memory_dynamic_min) },
@@ -91,35 +92,26 @@ static const struct_member xen_vm_record_struct_members[] =
.type = &abstract_type_string,
.offset = offsetof(xen_vm_record, vcpus_policy) },
{ .key = "VCPUs_params",
- .type = &abstract_type_string,
+ .type = &abstract_type_string_string_map,
.offset = offsetof(xen_vm_record, vcpus_params) },
+ { .key = "VCPUs_max",
+ .type = &abstract_type_int,
+ .offset = offsetof(xen_vm_record, vcpus_max) },
+ { .key = "VCPUs_at_startup",
+ .type = &abstract_type_int,
+ .offset = offsetof(xen_vm_record, vcpus_at_startup) },
{ .key = "VCPUs_number",
.type = &abstract_type_int,
.offset = offsetof(xen_vm_record, vcpus_number) },
{ .key = "VCPUs_utilisation",
.type = &abstract_type_int_float_map,
.offset = offsetof(xen_vm_record, vcpus_utilisation) },
- { .key = "VCPUs_features_required",
- .type = &xen_cpu_feature_set_abstract_type_,
- .offset = offsetof(xen_vm_record, vcpus_features_required) },
- { .key = "VCPUs_features_can_use",
- .type = &xen_cpu_feature_set_abstract_type_,
- .offset = offsetof(xen_vm_record, vcpus_features_can_use) },
- { .key = "VCPUs_features_force_on",
- .type = &xen_cpu_feature_set_abstract_type_,
- .offset = offsetof(xen_vm_record, vcpus_features_force_on) },
- { .key = "VCPUs_features_force_off",
- .type = &xen_cpu_feature_set_abstract_type_,
- .offset = offsetof(xen_vm_record, vcpus_features_force_off) },
{ .key = "actions_after_shutdown",
.type = &xen_on_normal_exit_abstract_type_,
.offset = offsetof(xen_vm_record, actions_after_shutdown) },
{ .key = "actions_after_reboot",
.type = &xen_on_normal_exit_abstract_type_,
.offset = offsetof(xen_vm_record, actions_after_reboot) },
- { .key = "actions_after_suspend",
- .type = &xen_on_normal_exit_abstract_type_,
- .offset = offsetof(xen_vm_record, actions_after_suspend) },
{ .key = "actions_after_crash",
.type = &xen_on_crash_behaviour_abstract_type_,
.offset = offsetof(xen_vm_record, actions_after_crash) },
@@ -132,6 +124,9 @@ static const struct_member xen_vm_record_struct_members[] =
{ .key = "VBDs",
.type = &abstract_type_ref_set,
.offset = offsetof(xen_vm_record, vbds) },
+ { .key = "crash_dumps",
+ .type = &abstract_type_ref_set,
+ .offset = offsetof(xen_vm_record, crash_dumps) },
{ .key = "VTPMs",
.type = &abstract_type_ref_set,
.offset = offsetof(xen_vm_record, vtpms) },
@@ -174,9 +169,15 @@ static const struct_member xen_vm_record_struct_members[] =
{ .key = "tools_version",
.type = &abstract_type_string_string_map,
.offset = offsetof(xen_vm_record, tools_version) },
- { .key = "otherConfig",
+ { .key = "other_config",
.type = &abstract_type_string_string_map,
- .offset = offsetof(xen_vm_record, otherconfig) }
+ .offset = offsetof(xen_vm_record, other_config) },
+ { .key = "is_control_domain",
+ .type = &abstract_type_bool,
+ .offset = offsetof(xen_vm_record, is_control_domain) },
+ { .key = "metrics",
+ .type = &abstract_type_ref,
+ .offset = offsetof(xen_vm_record, metrics) }
};
const abstract_type xen_vm_record_abstract_type_ =
@@ -200,17 +201,15 @@ xen_vm_record_free(xen_vm_record *record)
free(record->uuid);
free(record->name_label);
free(record->name_description);
+ xen_vdi_record_opt_free(record->suspend_vdi);
xen_host_record_opt_free(record->resident_on);
free(record->vcpus_policy);
- free(record->vcpus_params);
+ xen_string_string_map_free(record->vcpus_params);
xen_int_float_map_free(record->vcpus_utilisation);
- xen_cpu_feature_set_free(record->vcpus_features_required);
- xen_cpu_feature_set_free(record->vcpus_features_can_use);
- xen_cpu_feature_set_free(record->vcpus_features_force_on);
- xen_cpu_feature_set_free(record->vcpus_features_force_off);
xen_console_record_opt_set_free(record->consoles);
xen_vif_record_opt_set_free(record->vifs);
xen_vbd_record_opt_set_free(record->vbds);
+ xen_crashdump_record_opt_set_free(record->crash_dumps);
xen_vtpm_record_opt_set_free(record->vtpms);
free(record->pv_bootloader);
free(record->pv_kernel);
@@ -221,7 +220,8 @@ xen_vm_record_free(xen_vm_record *record)
free(record->platform_serial);
free(record->pci_bus);
xen_string_string_map_free(record->tools_version);
- xen_string_string_map_free(record->otherconfig);
+ xen_string_string_map_free(record->other_config);
+ xen_vm_metrics_record_opt_free(record->metrics);
free(record);
}
@@ -412,7 +412,7 @@ xen_vm_get_auto_power_on(xen_session *session, bool *result, xen_vm vm)
bool
-xen_vm_get_resident_on(xen_session *session, xen_host *result, xen_vm vm)
+xen_vm_get_suspend_vdi(xen_session *session, xen_vdi *result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -423,13 +423,13 @@ xen_vm_get_resident_on(xen_session *session, xen_host *result, xen_vm vm)
abstract_type result_type = abstract_type_string;
*result = NULL;
- XEN_CALL_("VM.get_resident_on");
+ XEN_CALL_("VM.get_suspend_VDI");
return session->ok;
}
bool
-xen_vm_get_memory_static_max(xen_session *session, int64_t *result, xen_vm vm)
+xen_vm_get_resident_on(xen_session *session, xen_host *result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -437,15 +437,16 @@ xen_vm_get_memory_static_max(xen_session *session, int64_t *result, xen_vm vm)
.u.string_val = vm }
};
- abstract_type result_type = abstract_type_int;
+ abstract_type result_type = abstract_type_string;
- XEN_CALL_("VM.get_memory_static_max");
+ *result = NULL;
+ XEN_CALL_("VM.get_resident_on");
return session->ok;
}
bool
-xen_vm_get_memory_dynamic_max(xen_session *session, int64_t *result, xen_vm vm)
+xen_vm_get_memory_static_max(xen_session *session, int64_t *result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -455,13 +456,13 @@ xen_vm_get_memory_dynamic_max(xen_session *session, int64_t *result, xen_vm vm)
abstract_type result_type = abstract_type_int;
- XEN_CALL_("VM.get_memory_dynamic_max");
+ XEN_CALL_("VM.get_memory_static_max");
return session->ok;
}
bool
-xen_vm_get_memory_actual(xen_session *session, int64_t *result, xen_vm vm)
+xen_vm_get_memory_dynamic_max(xen_session *session, int64_t *result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -471,7 +472,7 @@ xen_vm_get_memory_actual(xen_session *session, int64_t *result, xen_vm vm)
abstract_type result_type = abstract_type_int;
- XEN_CALL_("VM.get_memory_actual");
+ XEN_CALL_("VM.get_memory_dynamic_max");
return session->ok;
}
@@ -526,7 +527,7 @@ xen_vm_get_vcpus_policy(xen_session *session, char **result, xen_vm vm)
bool
-xen_vm_get_vcpus_params(xen_session *session, char **result, xen_vm vm)
+xen_vm_get_vcpus_params(xen_session *session, xen_string_string_map **result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -534,7 +535,7 @@ xen_vm_get_vcpus_params(xen_session *session, char **result, xen_vm vm)
.u.string_val = vm }
};
- abstract_type result_type = abstract_type_string;
+ abstract_type result_type = abstract_type_string_string_map;
*result = NULL;
XEN_CALL_("VM.get_VCPUs_params");
@@ -543,7 +544,7 @@ xen_vm_get_vcpus_params(xen_session *session, char **result, xen_vm vm)
bool
-xen_vm_get_vcpus_number(xen_session *session, int64_t *result, xen_vm vm)
+xen_vm_get_vcpus_max(xen_session *session, int64_t *result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -553,13 +554,13 @@ xen_vm_get_vcpus_number(xen_session *session, int64_t *result, xen_vm vm)
abstract_type result_type = abstract_type_int;
- XEN_CALL_("VM.get_VCPUs_number");
+ XEN_CALL_("VM.get_VCPUs_max");
return session->ok;
}
bool
-xen_vm_get_vcpus_utilisation(xen_session *session, xen_int_float_map **result, xen_vm vm)
+xen_vm_get_vcpus_at_startup(xen_session *session, int64_t *result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -567,50 +568,15 @@ xen_vm_get_vcpus_utilisation(xen_session *session, xen_int_float_map **result, x
.u.string_val = vm }
};
- abstract_type result_type = abstract_type_int_float_map;
-
- *result = NULL;
- XEN_CALL_("VM.get_VCPUs_utilisation");
- return session->ok;
-}
-
-
-bool
-xen_vm_get_vcpus_features_required(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm)
-{
- abstract_value param_values[] =
- {
- { .type = &abstract_type_string,
- .u.string_val = vm }
- };
-
- abstract_type result_type = xen_cpu_feature_set_abstract_type_;
-
- *result = NULL;
- XEN_CALL_("VM.get_VCPUs_features_required");
- return session->ok;
-}
-
-
-bool
-xen_vm_get_vcpus_features_can_use(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm)
-{
- abstract_value param_values[] =
- {
- { .type = &abstract_type_string,
- .u.string_val = vm }
- };
-
- abstract_type result_type = xen_cpu_feature_set_abstract_type_;
+ abstract_type result_type = abstract_type_int;
- *result = NULL;
- XEN_CALL_("VM.get_VCPUs_features_can_use");
+ XEN_CALL_("VM.get_VCPUs_at_startup");
return session->ok;
}
bool
-xen_vm_get_vcpus_features_force_on(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm)
+xen_vm_get_vcpus_number(xen_session *session, int64_t *result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -618,16 +584,15 @@ xen_vm_get_vcpus_features_force_on(xen_session *session, struct xen_cpu_feature_
.u.string_val = vm }
};
- abstract_type result_type = xen_cpu_feature_set_abstract_type_;
+ abstract_type result_type = abstract_type_int;
- *result = NULL;
- XEN_CALL_("VM.get_VCPUs_features_force_on");
+ XEN_CALL_("VM.get_VCPUs_number");
return session->ok;
}
bool
-xen_vm_get_vcpus_features_force_off(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm)
+xen_vm_get_vcpus_utilisation(xen_session *session, xen_int_float_map **result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -635,10 +600,10 @@ xen_vm_get_vcpus_features_force_off(xen_session *session, struct xen_cpu_feature
.u.string_val = vm }
};
- abstract_type result_type = xen_cpu_feature_set_abstract_type_;
+ abstract_type result_type = abstract_type_int_float_map;
*result = NULL;
- XEN_CALL_("VM.get_VCPUs_features_force_off");
+ XEN_CALL_("VM.get_VCPUs_utilisation");
return session->ok;
}
@@ -674,7 +639,7 @@ xen_vm_get_actions_after_reboot(xen_session *session, enum xen_on_normal_exit *r
bool
-xen_vm_get_actions_after_suspend(xen_session *session, enum xen_on_normal_exit *result, xen_vm vm)
+xen_vm_get_actions_after_crash(xen_session *session, enum xen_on_crash_behaviour *result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -682,14 +647,14 @@ xen_vm_get_actions_after_suspend(xen_session *session, enum xen_on_normal_exit *
.u.string_val = vm }
};
- abstract_type result_type = xen_on_normal_exit_abstract_type_;
- XEN_CALL_("VM.get_actions_after_suspend");
+ abstract_type result_type = xen_on_crash_behaviour_abstract_type_;
+ XEN_CALL_("VM.get_actions_after_crash");
return session->ok;
}
bool
-xen_vm_get_actions_after_crash(xen_session *session, enum xen_on_crash_behaviour *result, xen_vm vm)
+xen_vm_get_consoles(xen_session *session, struct xen_console_set **result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -697,14 +662,16 @@ xen_vm_get_actions_after_crash(xen_session *session, enum xen_on_crash_behaviour
.u.string_val = vm }
};
- abstract_type result_type = xen_on_crash_behaviour_abstract_type_;
- XEN_CALL_("VM.get_actions_after_crash");
+ abstract_type result_type = abstract_type_string_set;
+
+ *result = NULL;
+ XEN_CALL_("VM.get_consoles");
return session->ok;
}
bool
-xen_vm_get_consoles(xen_session *session, struct xen_console_set **result, xen_vm vm)
+xen_vm_get_vifs(xen_session *session, struct xen_vif_set **result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -715,13 +682,13 @@ xen_vm_get_consoles(xen_session *session, struct xen_console_set **result, xen_v
abstract_type result_type = abstract_type_string_set;
*result = NULL;
- XEN_CALL_("VM.get_consoles");
+ XEN_CALL_("VM.get_VIFs");
return session->ok;
}
bool
-xen_vm_get_vifs(xen_session *session, struct xen_vif_set **result, xen_vm vm)
+xen_vm_get_vbds(xen_session *session, struct xen_vbd_set **result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -732,13 +699,13 @@ xen_vm_get_vifs(xen_session *session, struct xen_vif_set **result, xen_vm vm)
abstract_type result_type = abstract_type_string_set;
*result = NULL;
- XEN_CALL_("VM.get_VIFs");
+ XEN_CALL_("VM.get_VBDs");
return session->ok;
}
bool
-xen_vm_get_vbds(xen_session *session, struct xen_vbd_set **result, xen_vm vm)
+xen_vm_get_crash_dumps(xen_session *session, struct xen_crashdump_set **result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -749,7 +716,7 @@ xen_vm_get_vbds(xen_session *session, struct xen_vbd_set **result, xen_vm vm)
abstract_type result_type = abstract_type_string_set;
*result = NULL;
- XEN_CALL_("VM.get_VBDs");
+ XEN_CALL_("VM.get_crash_dumps");
return session->ok;
}
@@ -989,7 +956,7 @@ xen_vm_get_tools_version(xen_session *session, xen_string_string_map **result, x
bool
-xen_vm_get_otherconfig(xen_session *session, xen_string_string_map **result, xen_vm vm)
+xen_vm_get_other_config(xen_session *session, xen_string_string_map **result, xen_vm vm)
{
abstract_value param_values[] =
{
@@ -1000,7 +967,40 @@ xen_vm_get_otherconfig(xen_session *session, xen_string_string_map **result, xen
abstract_type result_type = abstract_type_string_string_map;
*result = NULL;
- XEN_CALL_("VM.get_otherConfig");
+ XEN_CALL_("VM.get_other_config");
+ return session->ok;
+}
+
+
+bool
+xen_vm_get_is_control_domain(xen_session *session, bool *result, xen_vm vm)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = vm }
+ };
+
+ abstract_type result_type = abstract_type_bool;
+
+ XEN_CALL_("VM.get_is_control_domain");
+ return session->ok;
+}
+
+
+bool
+xen_vm_get_metrics(xen_session *session, xen_vm_metrics *result, xen_vm vm)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = vm }
+ };
+
+ abstract_type result_type = abstract_type_string;
+
+ *result = NULL;
+ XEN_CALL_("VM.get_metrics");
return session->ok;
}
@@ -1086,177 +1086,163 @@ xen_vm_set_auto_power_on(xen_session *session, xen_vm vm, bool auto_power_on)
bool
-xen_vm_set_memory_dynamic_max(xen_session *session, xen_vm vm, int64_t dynamic_max)
+xen_vm_set_memory_static_max(xen_session *session, xen_vm vm, int64_t static_max)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
{ .type = &abstract_type_int,
- .u.int_val = dynamic_max }
+ .u.int_val = static_max }
};
- xen_call_(session, "VM.set_memory_dynamic_max", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.set_memory_static_max", param_values, 2, NULL, NULL);
return session->ok;
}
bool
-xen_vm_set_memory_dynamic_min(xen_session *session, xen_vm vm, int64_t dynamic_min)
+xen_vm_set_memory_dynamic_max(xen_session *session, xen_vm vm, int64_t dynamic_max)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
{ .type = &abstract_type_int,
- .u.int_val = dynamic_min }
- };
-
- xen_call_(session, "VM.set_memory_dynamic_min", param_values, 2, NULL, NULL);
- return session->ok;
-}
-
-
-bool
-xen_vm_set_vcpus_policy(xen_session *session, xen_vm vm, char *policy)
-{
- abstract_value param_values[] =
- {
- { .type = &abstract_type_string,
- .u.string_val = vm },
- { .type = &abstract_type_string,
- .u.string_val = policy }
+ .u.int_val = dynamic_max }
};
- xen_call_(session, "VM.set_VCPUs_policy", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.set_memory_dynamic_max", param_values, 2, NULL, NULL);
return session->ok;
}
bool
-xen_vm_set_vcpus_params(xen_session *session, xen_vm vm, char *params)
+xen_vm_set_memory_dynamic_min(xen_session *session, xen_vm vm, int64_t dynamic_min)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
- { .type = &abstract_type_string,
- .u.string_val = params }
+ { .type = &abstract_type_int,
+ .u.int_val = dynamic_min }
};
- xen_call_(session, "VM.set_VCPUs_params", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.set_memory_dynamic_min", param_values, 2, NULL, NULL);
return session->ok;
}
bool
-xen_vm_set_vcpus_number(xen_session *session, xen_vm vm, int64_t number)
+xen_vm_set_memory_static_min(xen_session *session, xen_vm vm, int64_t static_min)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
{ .type = &abstract_type_int,
- .u.int_val = number }
+ .u.int_val = static_min }
};
- xen_call_(session, "VM.set_VCPUs_number", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.set_memory_static_min", param_values, 2, NULL, NULL);
return session->ok;
}
bool
-xen_vm_set_vcpus_features_force_on(xen_session *session, xen_vm vm, struct xen_cpu_feature_set *force_on)
+xen_vm_set_vcpus_policy(xen_session *session, xen_vm vm, char *policy)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
- { .type = &xen_cpu_feature_set_abstract_type_,
- .u.set_val = (arbitrary_set *)force_on }
+ { .type = &abstract_type_string,
+ .u.string_val = policy }
};
- xen_call_(session, "VM.set_VCPUs_features_force_on", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.set_VCPUs_policy", param_values, 2, NULL, NULL);
return session->ok;
}
bool
-xen_vm_add_vcpus_features_force_on(xen_session *session, xen_vm vm, enum xen_cpu_feature value)
+xen_vm_set_vcpus_params(xen_session *session, xen_vm vm, xen_string_string_map *params)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
- { .type = &xen_cpu_feature_abstract_type_,
- .u.string_val = xen_cpu_feature_to_string(value) }
+ { .type = &abstract_type_string_string_map,
+ .u.set_val = (arbitrary_set *)params }
};
- xen_call_(session, "VM.add_VCPUs_features_force_on", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.set_VCPUs_params", param_values, 2, NULL, NULL);
return session->ok;
}
bool
-xen_vm_remove_vcpus_features_force_on(xen_session *session, xen_vm vm, enum xen_cpu_feature value)
+xen_vm_add_to_vcpus_params(xen_session *session, xen_vm vm, char *key, char *value)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
- { .type = &xen_cpu_feature_abstract_type_,
- .u.string_val = xen_cpu_feature_to_string(value) }
+ { .type = &abstract_type_string,
+ .u.string_val = key },
+ { .type = &abstract_type_string,
+ .u.string_val = value }
};
- xen_call_(session, "VM.remove_VCPUs_features_force_on", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.add_to_VCPUs_params", param_values, 3, NULL, NULL);
return session->ok;
}
bool
-xen_vm_set_vcpus_features_force_off(xen_session *session, xen_vm vm, struct xen_cpu_feature_set *force_off)
+xen_vm_remove_from_vcpus_params(xen_session *session, xen_vm vm, char *key)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
- { .type = &xen_cpu_feature_set_abstract_type_,
- .u.set_val = (arbitrary_set *)force_off }
+ { .type = &abstract_type_string,
+ .u.string_val = key }
};
- xen_call_(session, "VM.set_VCPUs_features_force_off", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.remove_from_VCPUs_params", param_values, 2, NULL, NULL);
return session->ok;
}
bool
-xen_vm_add_vcpus_features_force_off(xen_session *session, xen_vm vm, enum xen_cpu_feature value)
+xen_vm_set_vcpus_max(xen_session *session, xen_vm vm, int64_t max)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
- { .type = &xen_cpu_feature_abstract_type_,
- .u.string_val = xen_cpu_feature_to_string(value) }
+ { .type = &abstract_type_int,
+ .u.int_val = max }
};
- xen_call_(session, "VM.add_VCPUs_features_force_off", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.set_VCPUs_max", param_values, 2, NULL, NULL);
return session->ok;
}
bool
-xen_vm_remove_vcpus_features_force_off(xen_session *session, xen_vm vm, enum xen_cpu_feature value)
+xen_vm_set_vcpus_at_startup(xen_session *session, xen_vm vm, int64_t at_startup)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
- { .type = &xen_cpu_feature_abstract_type_,
- .u.string_val = xen_cpu_feature_to_string(value) }
+ { .type = &abstract_type_int,
+ .u.int_val = at_startup }
};
- xen_call_(session, "VM.remove_VCPUs_features_force_off", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.set_VCPUs_at_startup", param_values, 2, NULL, NULL);
return session->ok;
}
@@ -1294,22 +1280,6 @@ xen_vm_set_actions_after_reboot(xen_session *session, xen_vm vm, enum xen_on_nor
bool
-xen_vm_set_actions_after_suspend(xen_session *session, xen_vm vm, enum xen_on_normal_exit after_suspend)
-{
- abstract_value param_values[] =
- {
- { .type = &abstract_type_string,
- .u.string_val = vm },
- { .type = &xen_on_normal_exit_abstract_type_,
- .u.string_val = xen_on_normal_exit_to_string(after_suspend) }
- };
-
- xen_call_(session, "VM.set_actions_after_suspend", param_values, 2, NULL, NULL);
- return session->ok;
-}
-
-
-bool
xen_vm_set_actions_after_crash(xen_session *session, xen_vm vm, enum xen_on_crash_behaviour after_crash)
{
abstract_value param_values[] =
@@ -1502,17 +1472,51 @@ xen_vm_set_platform_enable_audio(xen_session *session, xen_vm vm, bool enable_au
bool
-xen_vm_set_otherconfig(xen_session *session, xen_vm vm, xen_string_string_map *otherconfig)
+xen_vm_set_other_config(xen_session *session, xen_vm vm, xen_string_string_map *other_config)
{
abstract_value param_values[] =
{
{ .type = &abstract_type_string,
.u.string_val = vm },
{ .type = &abstract_type_string_string_map,
- .u.set_val = (arbitrary_set *)otherconfig }
+ .u.set_val = (arbitrary_set *)other_config }
+ };
+
+ xen_call_(session, "VM.set_other_config", param_values, 2, NULL, NULL);
+ return session->ok;
+}
+
+
+bool
+xen_vm_add_to_other_config(xen_session *session, xen_vm vm, char *key, char *value)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = vm },
+ { .type = &abstract_type_string,
+ .u.string_val = key },
+ { .type = &abstract_type_string,
+ .u.string_val = value }
+ };
+
+ xen_call_(session, "VM.add_to_other_config", param_values, 3, NULL, NULL);
+ return session->ok;
+}
+
+
+bool
+xen_vm_remove_from_other_config(xen_session *session, xen_vm vm, char *key)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = vm },
+ { .type = &abstract_type_string,
+ .u.string_val = key }
};
- xen_call_(session, "VM.set_otherConfig", param_values, 2, NULL, NULL);
+ xen_call_(session, "VM.remove_from_other_config", param_values, 2, NULL, NULL);
return session->ok;
}