[libvirt] FreeNodeMemory

Daniel P. Berrange berrange at redhat.com
Fri Feb 6 16:21:43 UTC 2009


On Fri, Feb 06, 2009 at 11:13:37AM -0500, John Levon wrote:
> On Fri, Feb 06, 2009 at 11:09:31AM +0000, Daniel P. Berrange wrote:
> 
> > On Fri, Feb 06, 2009 at 09:53:04AM +0000, Gihan Munasinghe wrote:
> > > Is there a specific reason for not having a "free_memory" with in the 
> > > "virNodeInfo" structure.
> > 
> > All public structures are part of the public ABI and channot
> > be changed once added. virNodeInfo existed long before the
> > free memory API came about, hence its not present there.
> 
> Can I get a clarification about adding to the end of such structures?
> Often APIs do this with an explicit warning not to embed structures,
> take sizeof() etc. The other usual choice is to make the structure
> really opaque and provide accessors behind functions.

We've used a mix of techniques - the virDomain/Network/Storage structs
are all opaque. The Interface/Block stats ones allow for sizeof().
The others are all fixed.

> If we don't do either, I'd be very worried by at least
> virDomainInterfaceStatsStruct, virDomainBlockStatsStruct,
> virNodeInfo, virVcpuInfo. We'll surely end up with a proliferation of
> virFoo2() calls for virFoo2Structs.

The interface/block stats functions both take a sizeof() parameter
to allow possible extension.  NodeInfo/VcpuInfo do not.

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