Re: [PATCH 3/3] Expose event loop implementation as a public API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 03, 2011 at 04:13:08PM -0700, Eric Blake wrote:
> On 03/03/2011 07:21 AM, Daniel P. Berrange wrote:
> > Not all applications have an existing event loop they need
> > to integrate with. Forcing them to implement the libvirt
> > event loop integration APIs is an undue burden. This just
> > exposes our simple poll() based implementation for apps
> > to use. So instead of calling
> > 
> >    virEventRegister(....callbacks...)
> > 
> > The app would call
> > 
> >    virEventRegisterDefaultImpl()
> > 
> > And then have a thread somewhere calling
> > 
> >     static bool quit = false;
> >     ....
> >     while (!quit)
> >       virEventRunDefaultImpl()
> > 
> > * daemon/libvirtd.c, tools/console.c,
> >   tools/virsh.c: Convert to public event loop APIs
> > * include/libvirt/libvirt.h.in, src/libvirt_private.syms: Add
> >   virEventRegisterDefaultImpl and virEventRunDefaultImpl
> > * src/util/event.c: Implement virEventRegisterDefaultImpl
> >   and virEventRunDefaultImpl using poll() event loop
> > * src/util/event_poll.c: Add full error reporting
> > * src/util/virterror.c, include/libvirt/virterror.h: Add
> >   VIR_FROM_EVENTS
> > ---
> >  daemon/libvirtd.c            |   12 +----
> >  include/libvirt/libvirt.h.in |    3 +
> >  include/libvirt/virterror.h  |    1 +
> >  src/libvirt_private.syms     |    8 ----
> >  src/libvirt_public.syms      |    6 +++
> >  src/util/event.c             |   94 +++++++++++++++++++++++++++++++++++++++++-
> >  src/util/event_poll.c        |   24 ++++++++++-
> >  src/util/virterror.c         |    3 +
> >  tools/console.c              |    3 +-
> >  tools/virsh.c                |    9 +---
> >  10 files changed, 133 insertions(+), 30 deletions(-)
> 
> You need to squash this in to keep 'make syntax-check' happy:
> 
> diff --git i/po/POTFILES.in w/po/POTFILES.in
> index 9852f97..1ed2765 100644
> --- i/po/POTFILES.in
> +++ w/po/POTFILES.in
> @@ -88,6 +88,7 @@ src/util/cgroup.c
>  src/util/command.c
>  src/util/conf.c
>  src/util/dnsmasq.c
> +src/util/event_poll.c
>  src/util/hooks.c
>  src/util/hostusb.c
>  src/util/interface.c
> 
> > +++ b/include/libvirt/virterror.h
> > @@ -79,6 +79,7 @@ typedef enum {
> >      VIR_FROM_SYSINFO = 37,	/* Error from sysinfo/SMBIOS */
> >      VIR_FROM_STREAMS = 38,	/* Error from I/O streams */
> >      VIR_FROM_VMWARE = 39,	/* Error from VMware driver */
> > +    VIR_FROM_EVENT = 40,       /* Error from event loop impl */
> >  } virErrorDomain;
> 
> Hmm, the line before had TAB, but your line has spaces, which makes it
> render odd in my reply.  Preferences on which whitespace we should be
> using there?  But any cleanup should be a separate patch.

Odd, I thought our make syntax-check blocked all use of TAB
in our files.

> > +++ b/src/libvirt_public.syms
> > @@ -424,4 +424,10 @@ LIBVIRT_0.8.8 {
> >          virConnectGetSysinfo;
> >  } LIBVIRT_0.8.6;
> >  
> > +LIBVIRT_0.9.0 {
> > +    global:
> > +        virEventRegisterDefaultImpl;
> > +        virEventRunDefaultImpl;
> > +} LIBVIRT_0.8.8;
> 
> So we're all in agreement that there's enough refactoring and other
> goodness going in to call the next version 0.9.0 :)

There's far more to come from me too :-)

> > +int virEventRunDefaultImpl(void)
> > +{
> > +    VIR_DEBUG0("");
> 
> Why ""?  A timestamp in the log without contents looks suspicious;
> should we add some contents, such as "event loop started"?

It isn't just the timestamp. The log will contain the function name,
which is what I really want to see.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]