aboutsummaryrefslogtreecommitdiff
path: root/qom
diff options
context:
space:
mode:
Diffstat (limited to 'qom')
-rw-r--r--qom/cpu.c25
-rw-r--r--qom/object_interfaces.c6
2 files changed, 17 insertions, 14 deletions
diff --git a/qom/cpu.c b/qom/cpu.c
index 4f38db0dac..deb8880930 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -34,7 +34,7 @@
CPUInterruptHandler cpu_interrupt_handler;
-bool cpu_exists(int64_t id)
+CPUState *cpu_by_arch_id(int64_t id)
{
CPUState *cpu;
@@ -42,36 +42,39 @@ bool cpu_exists(int64_t id)
CPUClass *cc = CPU_GET_CLASS(cpu);
if (cc->get_arch_id(cpu) == id) {
- return true;
+ return cpu;
}
}
- return false;
+ return NULL;
+}
+
+bool cpu_exists(int64_t id)
+{
+ return !!cpu_by_arch_id(id);
}
CPUState *cpu_generic_init(const char *typename, const char *cpu_model)
{
- char *str, *name, *featurestr;
CPUState *cpu = NULL;
ObjectClass *oc;
CPUClass *cc;
Error *err = NULL;
+ gchar **model_pieces;
- str = g_strdup(cpu_model);
- name = strtok(str, ",");
+ model_pieces = g_strsplit(cpu_model, ",", 2);
- oc = cpu_class_by_name(typename, name);
+ oc = cpu_class_by_name(typename, model_pieces[0]);
if (oc == NULL) {
- g_free(str);
+ g_strfreev(model_pieces);
return NULL;
}
cc = CPU_CLASS(oc);
- featurestr = strtok(NULL, ",");
/* TODO: all callers of cpu_generic_init() need to be converted to
* call parse_features() only once, before calling cpu_generic_init().
*/
- cc->parse_features(object_class_get_name(oc), featurestr, &err);
- g_free(str);
+ cc->parse_features(object_class_get_name(oc), model_pieces[1], &err);
+ g_strfreev(model_pieces);
if (err != NULL) {
goto out;
}
diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
index ff27e0669e..3bb8959f09 100644
--- a/qom/object_interfaces.c
+++ b/qom/object_interfaces.c
@@ -23,13 +23,13 @@ void user_creatable_complete(Object *obj, Error **errp)
}
}
-bool user_creatable_can_be_deleted(UserCreatable *uc, Error **errp)
+bool user_creatable_can_be_deleted(UserCreatable *uc)
{
UserCreatableClass *ucc = USER_CREATABLE_GET_CLASS(uc);
if (ucc->can_be_deleted) {
- return ucc->can_be_deleted(uc, errp);
+ return ucc->can_be_deleted(uc);
} else {
return true;
}
@@ -178,7 +178,7 @@ void user_creatable_del(const char *id, Error **errp)
return;
}
- if (!user_creatable_can_be_deleted(USER_CREATABLE(obj), errp)) {
+ if (!user_creatable_can_be_deleted(USER_CREATABLE(obj))) {
error_setg(errp, "object '%s' is in use, can not be deleted", id);
return;
}