[libvirt] Re: [PATCH 4/6] remote-driver: Add domainMemoryStats support

Daniel P. Berrange berrange at redhat.com
Fri Dec 18 20:32:33 UTC 2009


On Fri, Dec 18, 2009 at 09:36:11AM -0600, Adam Litke wrote:
> On Fri, 2009-12-18 at 10:30 +0000, Daniel P. Berrange wrote:
> > On Thu, Dec 17, 2009 at 05:41:45PM -0500, Adam Litke wrote:
> > > Use a dynamically sized xdr_array to pass memory stats on the wire.  This
> > > supports the addition of future memory stats and reduces the message size since
> > > only supported statistics are returned.
> > > 
> > > Signed-off-by: Adam Litke <agl at us.ibm.com>
> > > To: libvirt list <libvir-list at redhat.com>
> > > Cc: Daniel Veillard <veillard at redhat.com>
> > > Cc: Daniel P. Berrange <berrange at redhat.com>
> > > ---
> > >  daemon/remote.c              |   56 ++++++++++++++++++++++++++++++++++++++++++
> > >  src/remote/remote_driver.c   |   44 ++++++++++++++++++++++++++++++++-
> > >  src/remote/remote_protocol.c |   35 ++++++++++++++++++++++++++
> > >  src/remote/remote_protocol.h |   25 ++++++++++++++++++
> > >  src/remote/remote_protocol.x |   18 ++++++++++++-
> > >  5 files changed, 176 insertions(+), 2 deletions(-)
> > > 
> > 
> > 
> > > +struct remote_domain_memory_stats_ret {
> > > +        u_int len;
> > > +        struct remote_domain_memory_stat *stats;
> > > +};
> > > +typedef struct remote_domain_memory_stats_ret remote_domain_memory_stats_ret;
> > 
> > 
> > 
> > > +
> > > +struct remote_domain_memory_stats_ret {
> > > +    u_int len;
> > > +    remote_domain_memory_stat<REMOTE_DOMAIN_MEMORY_STATS_MAX>;
> > > +};
> > 
> > Something odd happened in the RPC generated code here, because rpcgen
> > should create you an explicit length field without you needing one. I
> > think it is because I forgot the param name on the array in the 
> > example I gave you. Basically it should work just like the existing
> > 'struct remote_domain_get_scheduler_parameters_ret' definition
> 
> I explicitly added the len parameter because I need to return the number
> of elements actually updated back to the remote caller (see
> remoteDomainMemoryStats).  Is there another way to extract this data
> using xdr without my explicit variable?
> 
> >    struct remote_domain_memory_stats_ret {
> >       remote_domain_memory_stat stats<REMOTE_DOMAIN_MEMORY_STATS_MAX>;
> >   };

Take a look at the header file generated when you use this style. The
'stats' variable should end up with two fields 'stats_len' and 'stats_val'

The end result is ultimately the same as yours, but this is the explicit
XDR array syntax

Regards,
Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list