static const char *pnv_core_cpu_typename(PnvCore *pc) { const char *core_type = object_class_get_name(object_get_class(OBJECT(pc))); int len = strlen(core_type) - strlen(PNV_CORE_TYPE_SUFFIX); char *s = g_strdup_printf(POWERPC_CPU_TYPE_NAME("%.*s"), len, core_type); const char *cpu_type = object_class_get_name(object_class_by_name(s)); g_free(s); return cpu_type; }
static const char *pnv_chip_core_typename(const PnvChip *o) { const char *chip_type = object_class_get_name(object_get_class(OBJECT(o))); int len = strlen(chip_type) - strlen(PNV_CHIP_TYPE_SUFFIX); char *s = g_strdup_printf(PNV_CORE_TYPE_NAME("%.*s"), len, chip_type); const char *core_type = object_class_get_name(object_class_by_name(s)); g_free(s); return core_type; }
static void machine_init_notify(Notifier *notifier, void *data) { Object *machine = qdev_get_machine(); ObjectClass *oc = object_get_class(machine); MachineClass *mc = MACHINE_CLASS(oc); if (mc->has_dynamic_sysbus) { /* Our machine can handle dynamic sysbus devices, we're all good */ return; } /* * Loop through all dynamically created devices and check whether there * are sysbus devices among them. If there are, error out. */ foreach_dynamic_sysbus_device(error_on_sysbus_device, NULL); }
static void validate_sysbus_device(SysBusDevice *sbdev, void *opaque) { MachineState *machine = opaque; MachineClass *mc = MACHINE_GET_CLASS(machine); bool allowed = false; strList *wl; for (wl = mc->allowed_dynamic_sysbus_devices; !allowed && wl; wl = wl->next) { allowed |= !!object_dynamic_cast(OBJECT(sbdev), wl->value); } if (!allowed) { error_report("Option '-device %s' cannot be handled by this machine", object_class_get_name(object_get_class(OBJECT(sbdev)))); exit(1); } }
static int error_on_sysbus_device(SysBusDevice *sbdev, void *opaque) { error_report("Option '-device %s' cannot be handled by this machine", object_class_get_name(object_get_class(OBJECT(sbdev)))); exit(1); }
char *object_to_string(Object *self) { return object_get_class (self)->to_string (self); }
void object_unref (Object *self) { object_get_class (self)->unref (self); }
Object *object_ref(Object *self) { return object_get_class (self)->ref (self); }