On Mon, 2005-06-27 at 11:33 -0700, Josh Triplett wrote:
> On Sat, 2005-06-25 at 02:41 +0100, Ian Pratt wrote:
> > > The attached patch adds a new dom0_op,
> > > DOM0_GETDOMAININFOLIST. This operation allows retrieval of
> > > the domain info structures for all domains in one hypercall.
> > >
> > > Using a small test program, on a system with 97 domains with
> > > non-contiguous domain IDs, I found that with this hypercall I
> > > could retrieve the full array of info structures 12840 times
> > > per second, an improvement from 2380 times per second with
> > > the DOM0_GETDOMAININFO op.
> > Can't you just reuse the existing xc_getdomain_info function and change
> > the hypercall depending on the number of domains being requested?
> xc_domain_getinfo? Ideally yes. However, xc_domain_getinfo performs a
> translation from the xc_domaininfo_t structure (a typedef of
> dom0_getdomaininfo_t) returned by DOM0_GETDOMAININFO to the array of
> xc_dominfo_t structures passed by the caller. So in order to use the
> bulk call from xc_domain_getinfo, it would need to allocate its own
> array of xc_domaininfo_t structures, make the hypercall, and then
> perform the translation on the array of structures. If
> xc_domain_getinfo took a caller-provided array of xc_domaininfo_t
> structures, I would definitely have just modified it to use the new
> hypercall rather than making a new function.
> What is the purpose of that translation from one structure to the other?
> The only differences seem to be reordered/renamed fields, and splitting
> the flags field out into individual bitfields. If that is the only
> purpose, then why not just have xc_domaininfo_t include a union of the
> flags field and a structure containing a bitfield?
Looking at the Python bindings, I see that they make use of this
split-out structure to more easily fill the equivalent Python data
structure. Would it help to provide a patch which would change the
python bindings to call xc_domain_getinfolist and deal with
xc_domaininfo_t (aka dom0_getdomaininfo_t) directly (possibly modifying
dom0_getdomaininfo_t to contain something like a union of the flags and
a split-out bitfield structure)? With that change, xc_domain_getinfo
could then become a backward-compatibility function; it could also
optionally be changed to fetch domain information in chunks using
Also, is it acceptable for libxc to make use of unnamed unions and
unnamed structs as structure members?
- Josh Triplett
Xen-devel mailing list