Commit 1fd5d4fe authored by Eric Blake's avatar Eric Blake Committed by Markus Armbruster
Browse files

memory: Convert to new qapi union layout



We have two issues with our qapi union layout:
1) Even though the QMP wire format spells the tag 'type', the
C code spells it 'kind', requiring some hacks in the generator.
2) The C struct uses an anonymous union, which places all tag
values in the same namespace as all non-variant members. This
leads to spurious collisions if a tag value matches a non-variant
member's name.

Make the conversion to the new layout for memory-related code.

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <1445898903-12082-21-git-send-email-eblake@redhat.com>
[Commit message tweaked slightly]
Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
parent 568c73a4
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1958,12 +1958,12 @@ void hmp_info_memory_devices(Monitor *mon, const QDict *qdict)
        value = info->value;

        if (value) {
            switch (value->kind) {
            switch (value->type) {
            case MEMORY_DEVICE_INFO_KIND_DIMM:
                di = value->dimm;
                di = value->u.dimm;

                monitor_printf(mon, "Memory device [%s]: \"%s\"\n",
                               MemoryDeviceInfoKind_lookup[value->kind],
                               MemoryDeviceInfoKind_lookup[value->type],
                               di->id ? di->id : "");
                monitor_printf(mon, "  addr: 0x%" PRIx64 "\n", di->addr);
                monitor_printf(mon, "  slot: %" PRId64 "\n", di->slot);
+3 −3
Original line number Diff line number Diff line
@@ -179,7 +179,7 @@ int qmp_pc_dimm_device_list(Object *obj, void *opaque)
                                               NULL);
            di->memdev = object_get_canonical_path(OBJECT(dimm->hostmem));

            info->dimm = di;
            info->u.dimm = di;
            elem->value = info;
            elem->next = NULL;
            **prev = elem;
@@ -203,9 +203,9 @@ ram_addr_t get_current_ram_size(void)
        MemoryDeviceInfo *value = info->value;

        if (value) {
            switch (value->kind) {
            switch (value->type) {
            case MEMORY_DEVICE_INFO_KIND_DIMM:
                size += value->dimm->size;
                size += value->u.dimm->size;
                break;
            default:
                break;
+4 −4
Original line number Diff line number Diff line
@@ -226,9 +226,9 @@ static int parse_numa(void *opaque, QemuOpts *opts, Error **errp)
        goto error;
    }

    switch (object->kind) {
    switch (object->type) {
    case NUMA_OPTIONS_KIND_NODE:
        numa_node_parse(object->node, opts, &err);
        numa_node_parse(object->u.node, opts, &err);
        if (err) {
            goto error;
        }
@@ -487,9 +487,9 @@ static void numa_stat_memory_devices(uint64_t node_mem[])
        MemoryDeviceInfo *value = info->value;

        if (value) {
            switch (value->kind) {
            switch (value->type) {
            case MEMORY_DEVICE_INFO_KIND_DIMM:
                node_mem[value->dimm->node] += value->dimm->size;
                node_mem[value->u.dimm->node] += value->u.dimm->size;
                break;
            default:
                break;