• E
    cpu: Convert CpuInfo into flat union · 86f4b687
    Eric Blake 提交于
    The CpuInfo struct is used only by the 'query-cpus' output
    command, so we are free to modify it by adding fields (clients
    are already supposed to ignore unknown output fields), or by
    changing optional members to mandatory, while still keeping
    QMP wire compatibility with older versions of qemu.
    
    When qapi type CpuInfo was originally created for 0.14, we had
    no notion of a flat union, and instead just listed a bunch of
    optional fields with documentation about the mutually-exclusive
    choice of which instruction pointer field(s) would be provided
    for a given architecture.  But now that we have flat unions and
    introspection, it is better to segregate off which fields will
    be provided according to the actual architecture.  With this in
    place, we no longer need the fields to be optional, because the
    choice of the new 'arch' discriminator serves that role.
    
    This has an additional benefit: the old all-in-one struct was
    the only place in the code base that had a case-sensitive
    naming of members 'pc' vs. 'PC'.  Separating these spellings
    into different branches of the flat union will allow us to add
    restrictions against future case-insensitive collisions, since
    that is generally a poor interface practice.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    Message-Id: <1447836791-369-25-git-send-email-eblake@redhat.com>
    [Spelling of CPUInfo{SPARC,PPC,MIPS} fixed]
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    86f4b687
cpus.c 44.1 KB