On Wed, Nov 10, 2010 at 01:34:29PM +0000, Daniel P. Berrange wrote:
 On Wed, Nov 10, 2010 at 01:23:50PM +0000, Richard W.M. Jones wrote:
 > On Wed, Nov 10, 2010 at 01:17:54PM +0000, Daniel P. Berrange wrote:
 > > On Wed, Nov 10, 2010 at 11:46:31AM +0000, Richard W.M. Jones wrote:
 > > > +# This comes from the Sys::Virt bindings.
 > > > +INPUT
 > > > +O_OBJECT_domain
 > > > +    if (sv_isobject ($arg) && (SvTYPE (SvRV ($arg)) ==
SVt_PVMG))
 > > > +        $var = ($type)SvIV ((SV*) SvRV ($arg));
 > > > +    else {
 > > > +        warn(\"${Package}::$func_name() -- $var is not a blessed SV
reference\");
 > > > +        XSRETURN_UNDEF;
 > > > +    }
 > > 
 > > I haven't been considering this Sys::Virt type mapping to be
 > > part of the stable ABI/API, just an internal impl details. I'm
 > > wondering how other Perl XS modules allow extension, without
 > > exposing their internal typedef implementation detail.
 > 
 > Yup, this is a general problem with providing integration for these
 > pointers through any non-C language bindings.  It could be alleviated
 > by having Sys::Virt provide a little bit of C to perform the SV ->
 > pointer conversion -- I think if it was in Sys/Virt/Virt.so then we
 > would be able to link to it.
 > 
 > > > +  /* Connect to libvirt, find the domain. */
 > > > +  conn = virConnectOpenReadOnly (libvirturi);
 > > > +  if (!conn) {
 > > > +    err = virGetLastError ();
 > > > +    error (g, _("could not connect to libvirt (code %d, domain %d):
%s"),
 > > > +           err->code, err->domain, err->message);
 > > > +    goto cleanup;
 > > > +  }
 > > > +
 > > > +  dom = virDomainLookupByName (conn, domain_name);
 > > > +  if (!dom) {
 > > > +    err = virConnGetLastError (conn);
 > > 
 > > NB, virConnGetLastError() is deprecated because it isn't threadsafe.
 > > Instead use virGetLastError() in all places.
 > 
 > Can I call this if I don't have a connection pointer?  See first case
 > above. 
[...]
Right, I was reading your comment the wrong way round :-)
Rich.
-- 
Richard Jones, Virtualization Group, Red Hat 
http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top