On 24/11/20 17:22, Claudio Fontana wrote:
+static void x86_cpu_accel_init(void)
 {
-    X86CPUAccelClass *acc;
+    const char *ac_name;
+    ObjectClass *ac;
+    char *xac_name;
+    ObjectClass *xac;
- acc = X86_CPU_ACCEL_CLASS(object_class_by_name(accel_name));
-    g_assert(acc != NULL);
+    ac = object_get_class(OBJECT(current_accel()));
+    g_assert(ac != NULL);
+    ac_name = object_class_get_name(ac);
+    g_assert(ac_name != NULL);
- object_class_foreach(x86_cpu_accel_init_aux, TYPE_X86_CPU, false, &acc);
+    xac_name = g_strdup_printf("%s-%s", ac_name, TYPE_X86_CPU);
+    xac = object_class_by_name(xac_name);
+    g_free(xac_name);
+
+    if (xac) {
+        object_class_foreach(x86_cpu_accel_init_aux, TYPE_X86_CPU, false, xac);
+    }
 }
+
+accel_cpu_init(x86_cpu_accel_init);

If this and cpus_accel_ops_init are the only call to accel_cpu_init, I'd rather make them functions in CPUClass (which you find and call via CPU_RESOLVING_TYPE) and AccelClass respectively.

Paolo


Reply via email to