On Thu, Apr 30, 2015 at 06:51:43PM -0700, Peter Crosthwaite wrote:
> On Thu, Apr 30, 2015 at 12:19 PM, Eduardo Habkost <ehabk...@redhat.com> wrote:
> > This will provide a predictable path for the CPU objects, and a more
> > powerful alternative for the query-cpus QMP command, as now every QOM
> > property on CPU objects can be easily queried.
> >
> > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com>
> > ---
> > Note that this doesn't replace any future topology enumeration
> > mechanisms we may choose to implement. It just replaces the existing
> > topology-unaware VCPU enumeration mechanism that is query-cpus.
> >
> > Reference to previous discussion:
> >
> >   Date: Thu, 23 Apr 2015 10:17:36 -0300
> >   From: Eduardo Habkost <ehabk...@redhat.com>
> >   Subject: Re: [Qemu-devel] cpu modelling and hotplug (was: [PATCH RFC 0/4] 
> > target-i386: PC socket/core/thread modeling, part 1)
> >   Message-ID: <20150423131736.ga17...@thinpad.lan.raisama.net>
> > ---
> >  exec.c            | 16 ++++++++++++++++
> >  include/qom/cpu.h |  3 +++
> >  2 files changed, 19 insertions(+)
> >
> > diff --git a/exec.c b/exec.c
> > index ae37b98..8bdfa65 100644
> > --- a/exec.c
> > +++ b/exec.c
> > @@ -519,6 +519,20 @@ void tcg_cpu_address_space_init(CPUState *cpu, 
> > AddressSpace *as)
> >  }
> >  #endif
> >
> > +static void cpu_add_qom_link(CPUState *cpu)
> > +{
> > +#if !defined(CONFIG_USER_ONLY)
> > +    Object *cobj = OBJECT(cpu);
> > +    Object *cpu_container = container_get(OBJECT(current_machine), 
> > "/cpus");
> > +    char *path = g_strdup_printf("%d", cpu->cpu_index);
> > +
> 
> This pathing is inconsistent with other arrayification efforts where
> we use ../foo[N].
> Do we need the container, can we just use /cpu[0], /cpu[1]?

Having a container looked simpler and cleaner than using cpu[0], cpu[1],
but I don't have a strong preference either way.

> 
> > +    cpu->self = cobj;
> 
> Paolo's . property ideal is probably a winner, but see this discussion:
> 
> https://lists.gnu.org/archive/html/qemu-devel/2015-04/msg03557.html
> 
> for how to create RYO links with open coded setters and getters.
> You could use the object itself as an opaque data and a trivial getter,
> no setter and then you can get rid of the self pointer.

True. But I will try to implement that in a generic way instead of
duplicating what's already implemented by object_get_link_property() and
object_resolve_link_property().

-- 
Eduardo

Reply via email to