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 :|