diff options
Diffstat (limited to 'qom')
-rw-r--r-- | qom/cpu.c | 25 | ||||
-rw-r--r-- | qom/object_interfaces.c | 6 |
2 files changed, 17 insertions, 14 deletions
@@ -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; } |