machine: MACHINE_TYPE_NAME macro

The macro will be useful to ensure the machine class names follow the
right format to make machine class lookup by class name work correctly.

Backports commit c84a8f01b2a5d8bf98c447796d4a747333a5b1fd from qemu
This commit is contained in:
Eduardo Habkost 2018-03-11 13:44:24 -04:00 committed by Lioncash
parent ba09afc8b5
commit df4cfe6804
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
2 changed files with 7 additions and 1 deletions

View file

@ -59,6 +59,12 @@ void qemu_register_machine(struct uc_struct *uc, QEMUMachine *m, const char *typ
void (*init)(struct uc_struct *uc, ObjectClass *oc, void *data)); void (*init)(struct uc_struct *uc, ObjectClass *oc, void *data));
#define TYPE_MACHINE_SUFFIX "-machine" #define TYPE_MACHINE_SUFFIX "-machine"
/* Machine class name that needs to be used for class-name-based machine
* type lookup to work.
*/
#define MACHINE_TYPE_NAME(machinename) (machinename TYPE_MACHINE_SUFFIX)
#define TYPE_MACHINE "machine" #define TYPE_MACHINE "machine"
#undef MACHINE /* BSD defines it and QEMU does not use it */ #undef MACHINE /* BSD defines it and QEMU does not use it */
#define MACHINE(uc, obj) \ #define MACHINE(uc, obj) \

View file

@ -193,7 +193,7 @@ static void machine_class_init(struct uc_struct *uc, ObjectClass *oc, void *data
void qemu_register_machine(struct uc_struct *uc, QEMUMachine *m, const char *type_machine, void qemu_register_machine(struct uc_struct *uc, QEMUMachine *m, const char *type_machine,
void (*init)(struct uc_struct *uc, ObjectClass *oc, void *data)) void (*init)(struct uc_struct *uc, ObjectClass *oc, void *data))
{ {
char *name = g_strconcat(m->name, TYPE_MACHINE_SUFFIX, NULL); char *name = g_strdup_printf(MACHINE_TYPE_NAME("%s"), m->name);
TypeInfo ti = {0}; TypeInfo ti = {0};
ti.name = name; ti.name = name;
ti.parent = type_machine; ti.parent = type_machine;