[libvirt] PATCH: Move domain event helpers out of internal.h/libvirt.c

Ben Guthro bguthro at virtualiron.com
Wed Oct 29 12:41:54 UTC 2008


I like this much better than where I had put everything.
Makes much more sense to encapsulate it in its own file/header

+1


Daniel P. Berrange wrote on 10/29/2008 08:06 AM:
> There are a bunch of helper functions relating to domain events, which
> are only used internally by hypervisor drivers. Following the principle
> that libvirt.c should only contain functions exported in the API, and
> internal.h should not define any function signatures, these helpers
> need to move.
> 
> So I'm inventing a domain_events.c, and domain_events.h file to contain
> the domain events helper code, in much same way as domain_conf.c and
> domain_conf.h contain the domain XML helper code.
> 
> Again no functional change here. With this patch applied, the cleanup
> of internal.h is basically complete - at least more than good enough
> for now. It'd be nice to move the struct definitions of virDomainPtr,
> etc elsewhere, perhaps to src/libvirt.h because they're public API,
> but not exported publically.
> 
>  b/src/domain_event.c  |  229 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  b/src/domain_event.h  |   83 ++++++++++++++++++
>  qemud/event.c         |    8 -
>  qemud/event.h         |    7 +
>  src/Makefile.am       |    1 
>  src/internal.h        |   73 ---------------
>  src/libvirt.c         |  201 -------------------------------------------
>  src/qemu_conf.h       |    1 
>  src/remote_internal.c |    1 
>  9 files changed, 326 insertions(+), 278 deletions(-)
> 
> Daniel
> 
> diff -r 0325a25d1762 qemud/event.c
> --- a/qemud/event.c	Wed Oct 29 11:48:08 2008 +0000
> +++ b/qemud/event.c	Wed Oct 29 12:03:29 2008 +0000
> @@ -489,7 +489,7 @@
>  }
>  
>  int
> -__virEventHandleTypeToPollEvent(virEventHandleType events)
> +virEventHandleTypeToPollEvent(int events)
>  {
>      int ret = 0;
>      if(events & VIR_EVENT_HANDLE_READABLE)
> @@ -503,10 +503,10 @@
>      return ret;
>  }
>  
> -virEventHandleType
> -__virPollEventToEventHandleType(int events)
> +int
> +virPollEventToEventHandleType(int events)
>  {
> -    virEventHandleType ret = 0;
> +    int ret = 0;
>      if(events & POLLIN)
>          ret |= VIR_EVENT_HANDLE_READABLE;
>      if(events & POLLOUT)
> diff -r 0325a25d1762 qemud/event.h
> --- a/qemud/event.h	Wed Oct 29 11:48:08 2008 +0000
> +++ b/qemud/event.h	Wed Oct 29 12:03:29 2008 +0000
> @@ -105,4 +105,11 @@
>   */
>  int virEventRunOnce(void);
>  
> +int
> +virEventHandleTypeToPollEvent(int events);
> +int
> +virPollEventToEventHandleType(int events);
> +
> +
> +
>  #endif /* __VIRTD_EVENT_H__ */
> diff -r 0325a25d1762 src/Makefile.am
> --- a/src/Makefile.am	Wed Oct 29 11:48:08 2008 +0000
> +++ b/src/Makefile.am	Wed Oct 29 12:03:29 2008 +0000
> @@ -150,6 +150,7 @@
>  		hash.c hash.h					\
>  		internal.h					\
>  		libvirt.c					\
> +		domain_event.c domain_event.h 			\
>  		$(GENERIC_LIB_SOURCES)				\
>  		$(DOMAIN_CONF_SOURCES)				\
>  		$(NETWORK_CONF_SOURCES)				\
> diff -r 0325a25d1762 src/domain_event.c
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/src/domain_event.c	Wed Oct 29 12:03:29 2008 +0000
> @@ -0,0 +1,229 @@
> +/*
> + * domain_event.c: domain event queue processing helpers
> + *
> + * Copyright (C) 2008 VirtualIron
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
> + *
> + * Author: Ben Guthro
> + */
> +
> +#include <config.h>
> +
> +#include "domain_event.h"
> +#include "libvirt.h"
> +#include "memory.h"
> +
> +
> +/**
> + * virDomainEventCallbackListFree:
> + * @list: event callback list head
> + *
> + * Free the memory in the domain event callback list
> + */
> +void
> +virDomainEventCallbackListFree(virDomainEventCallbackListPtr list)
> +{
> +    int i;
> +    for (i=0; i<list->count; i++) {
> +        VIR_FREE(list->callbacks[i]);
> +    }
> +    VIR_FREE(list);
> +}
> +/**
> + * virDomainEventCallbackListRemove:
> + * @conn: pointer to the connection
> + * @cbList: the list
> + * @callback: the callback to remove
> + *
> + * Internal function to remove a callback from a virDomainEventCallbackListPtr
> + */
> +int
> +virDomainEventCallbackListRemove(virConnectPtr conn,
> +                                 virDomainEventCallbackListPtr cbList,
> +                                 virConnectDomainEventCallback callback)
> +{
> +    int i;
> +    for (i = 0 ; i < cbList->count ; i++) {
> +        if(cbList->callbacks[i]->cb == callback &&
> +           cbList->callbacks[i]->conn == conn) {
> +            virUnrefConnect(cbList->callbacks[i]->conn);
> +            VIR_FREE(cbList->callbacks[i]);
> +
> +            if (i < (cbList->count - 1))
> +                memmove(cbList->callbacks + i,
> +                        cbList->callbacks + i + 1,
> +                        sizeof(*(cbList->callbacks)) *
> +                                (cbList->count - (i + 1)));
> +
> +            if (VIR_REALLOC_N(cbList->callbacks,
> +                              cbList->count - 1) < 0) {
> +                ; /* Failure to reduce memory allocation isn't fatal */
> +            }
> +            cbList->count--;
> +
> +            return 0;
> +        }
> +    }
> +    return -1;
> +}
> +
> +/**
> + * virDomainEventCallbackListAdd:
> + * @conn: pointer to the connection
> + * @cbList: the list
> + * @callback: the callback to add
> + * @opaque: opaque data tio pass to callback
> + *
> + * Internal function to add a callback from a virDomainEventCallbackListPtr
> + */
> +int
> +virDomainEventCallbackListAdd(virConnectPtr conn,
> +                              virDomainEventCallbackListPtr cbList,
> +                              virConnectDomainEventCallback callback,
> +                              void *opaque)
> +{
> +    virDomainEventCallbackPtr event;
> +    int n;
> +
> +    /* Check incoming */
> +    if ( !cbList ) {
> +        return -1;
> +    }
> +
> +    /* check if we already have this callback on our list */
> +    for (n=0; n < cbList->count; n++) {
> +        if(cbList->callbacks[n]->cb == callback &&
> +           conn == cbList->callbacks[n]->conn) {
> +            DEBUG0("WARNING: Callback already tracked");
> +            return -1;
> +        }
> +    }
> +    /* Allocate new event */
> +    if (VIR_ALLOC(event) < 0) {
> +        DEBUG0("Error allocating event");
> +        return -1;
> +    }
> +    event->conn = conn;
> +    event->cb = callback;
> +    event->opaque = opaque;
> +
> +    /* Make space on list */
> +    n = cbList->count;
> +    if (VIR_REALLOC_N(cbList->callbacks, n + 1) < 0) {
> +        DEBUG0("Error reallocating list");
> +        VIR_FREE(event);
> +        return -1;
> +    }
> +
> +    event->conn->refs++;
> +
> +    cbList->callbacks[n] = event;
> +    cbList->count++;
> +    return 0;
> +}
> +
> +/**
> + * virDomainEventQueueFree:
> + * @queue: pointer to the queue
> + *
> + * Free the memory in the queue. We process this like a list here
> + */
> +void
> +virDomainEventQueueFree(virDomainEventQueuePtr queue)
> +{
> +    int i;
> +    for ( i=0 ; i<queue->count ; i++ ) {
> +        VIR_FREE(queue->events[i]);
> +    }
> +    VIR_FREE(queue);
> +}
> +
> +/**
> + * virDomainEventCallbackQueuePop:
> + * @evtQueue: the queue of events
> + *
> + * Internal function to pop off, and return the front of the queue
> + * NOTE: The caller is responsible for freeing the returned object
> + *
> + * Returns: virDomainEventPtr on success NULL on failure.
> + */
> +virDomainEventPtr
> +virDomainEventCallbackQueuePop(virDomainEventQueuePtr evtQueue)
> +{
> +    virDomainEventPtr ret;
> +
> +    if(!evtQueue || evtQueue->count == 0 )
> +        return NULL;
> +
> +    ret = evtQueue->events[0];
> +
> +    memmove(evtQueue->events,
> +            evtQueue->events + 1,
> +            sizeof(*(evtQueue->events)) *
> +                    (evtQueue->count - 1));
> +
> +    if (VIR_REALLOC_N(evtQueue->events,
> +                        evtQueue->count - 1) < 0) {
> +        ; /* Failure to reduce memory allocation isn't fatal */
> +    }
> +    evtQueue->count--;
> +
> +    return ret;
> +}
> +
> +/**
> + * virDomainEventCallbackQueuePush:
> + * @evtQueue: the dom event queue
> + * @dom: the domain to add
> + * @event: the event to add
> + *
> + * Internal function to push onto the back of an virDomainEventQueue
> + *
> + * Returns: 0 on success, -1 on failure
> + */
> +int
> +virDomainEventCallbackQueuePush(virDomainEventQueuePtr evtQueue,
> +                                virDomainPtr dom,
> +                                virDomainEventType event)
> +{
> +    virDomainEventPtr domEvent;
> +
> +    /* Check incoming */
> +    if ( !evtQueue ) {
> +        return -1;
> +    }
> +
> +    /* Allocate new event */
> +    if (VIR_ALLOC(domEvent) < 0) {
> +        DEBUG0("Error allocating event");
> +        return -1;
> +    }
> +    domEvent->dom = dom;
> +    domEvent->event = event;
> +
> +    /* Make space on queue */
> +    if (VIR_REALLOC_N(evtQueue->events,
> +                      evtQueue->count + 1) < 0) {
> +        DEBUG0("Error reallocating queue");
> +        VIR_FREE(domEvent);
> +        return -1;
> +    }
> +
> +    evtQueue->events[evtQueue->count] = domEvent;
> +    evtQueue->count++;
> +    return 0;
> +}
> +
> diff -r 0325a25d1762 src/domain_event.h
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/src/domain_event.h	Wed Oct 29 12:03:29 2008 +0000
> @@ -0,0 +1,83 @@
> +/*
> + * domain_event.h: domain event queue processing helpers
> + *
> + * Copyright (C) 2008 VirtualIron
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
> + *
> + * Author: Ben Guthro
> + */
> +
> +#include "internal.h"
> +
> +
> +#ifndef __DOMAIN_EVENT_H__
> +#define __DOMAIN_EVENT_H__
> +
> +struct _virDomainEventCallback {
> +    virConnectPtr conn;
> +    virConnectDomainEventCallback cb;
> +    void *opaque;
> +};
> +typedef struct _virDomainEventCallback virDomainEventCallback;
> +typedef virDomainEventCallback *virDomainEventCallbackPtr;
> +
> +struct _virDomainEventCallbackList {
> +    unsigned int count;
> +    virDomainEventCallbackPtr *callbacks;
> +};
> +typedef struct _virDomainEventCallbackList virDomainEventCallbackList;
> +typedef virDomainEventCallbackList *virDomainEventCallbackListPtr;
> +
> +void virDomainEventCallbackListFree(virDomainEventCallbackListPtr list);
> +
> +int virDomainEventCallbackListAdd(virConnectPtr conn,
> +                                  virDomainEventCallbackListPtr cbList,
> +                                  virConnectDomainEventCallback callback,
> +                                  void *opaque);
> +
> +int virDomainEventCallbackListRemove(virConnectPtr conn,
> +                                     virDomainEventCallbackListPtr cbList,
> +                                     virConnectDomainEventCallback callback);
> +
> +/**
> + * Dispatching domain events that come in while
> + * in a call / response rpc
> + */
> +struct _virDomainEvent {
> +    virDomainPtr dom;
> +    virDomainEventType event;
> +};
> +typedef struct _virDomainEvent virDomainEvent;
> +typedef virDomainEvent *virDomainEventPtr;
> +
> +struct _virDomainEventQueue {
> +    unsigned int count;
> +    virDomainEventPtr *events;
> +};
> +typedef struct _virDomainEventQueue virDomainEventQueue;
> +typedef virDomainEventQueue *virDomainEventQueuePtr;
> +
> +int virDomainEventCallbackQueuePush(virDomainEventQueuePtr evtQueue,
> +                                    virDomainPtr dom,
> +                                    virDomainEventType event);
> +
> +virDomainEventPtr
> +virDomainEventCallbackQueuePop(virDomainEventQueuePtr evtQueue);
> +
> +void virDomainEventQueueFree(virDomainEventQueuePtr queue);
> +
> +
> +#endif
> diff -r 0325a25d1762 src/internal.h
> --- a/src/internal.h	Wed Oct 29 11:48:08 2008 +0000
> +++ b/src/internal.h	Wed Oct 29 12:03:29 2008 +0000
> @@ -294,77 +294,4 @@
>      char key[PATH_MAX];                  /* unique key for storage vol */
>  };
>  
> -
> -/**
> - * Domain Event Notification
> - */
> -
> -struct _virDomainEventCallback {
> -    virConnectPtr conn;
> -    virConnectDomainEventCallback cb;
> -    void *opaque;
> -};
> -typedef struct _virDomainEventCallback virDomainEventCallback;
> -typedef virDomainEventCallback *virDomainEventCallbackPtr;
> -
> -struct _virDomainEventCallbackList {
> -    unsigned int count;
> -    virDomainEventCallbackPtr *callbacks;
> -};
> -typedef struct _virDomainEventCallbackList virDomainEventCallbackList;
> -typedef virDomainEventCallbackList *virDomainEventCallbackListPtr;
> -
> -void __virDomainEventCallbackListFree(virDomainEventCallbackListPtr list);
> -#define virDomainEventCallbackListFree(x) __virDomainEventCallbackListFree(x)
> -
> -int  __virDomainEventCallbackListAdd(virConnectPtr conn,
> -                                  virDomainEventCallbackListPtr cbList,
> -                                  virConnectDomainEventCallback callback,
> -                                  void *opaque);
> -#define virDomainEventCallbackListAdd(a,b,c,d) \
> -        __virDomainEventCallbackListAdd((a),(b),(c),(d))
> -
> -int  __virDomainEventCallbackListRemove(virConnectPtr conn,
> -                                      virDomainEventCallbackListPtr cbList,
> -                                      virConnectDomainEventCallback callback);
> -#define virDomainEventCallbackListRemove(a,b,c) \
> -        __virDomainEventCallbackListRemove((a),(b),(c))
> -
> -int __virEventHandleTypeToPollEvent(virEventHandleType events);
> -#define virEventHandleTypeToPollEvent(x) __virEventHandleTypeToPollEvent(x)
> -
> -virEventHandleType __virPollEventToEventHandleType(int events);
> -#define virPollEventToEventHandleType(x) __virPollEventToEventHandleType(x)
> -
> -/**
> - * Dispatching domain events that come in while
> - * in a call / response rpc
> - */
> -struct _virDomainEvent {
> -    virDomainPtr dom;
> -    virDomainEventType event;
> -};
> -typedef struct _virDomainEvent virDomainEvent;
> -typedef virDomainEvent *virDomainEventPtr;
> -
> -struct _virDomainEventQueue {
> -    unsigned int count;
> -    virDomainEventPtr *events;
> -};
> -typedef struct _virDomainEventQueue virDomainEventQueue;
> -typedef virDomainEventQueue *virDomainEventQueuePtr;
> -
> -int __virDomainEventCallbackQueuePush(virDomainEventQueuePtr evtQueue,
> -                                      virDomainPtr dom,
> -                                      virDomainEventType event);
> -#define virDomainEventCallbackQueuePush(a,b,c) \
> -        __virDomainEventCallbackQueuePush((a),(b),(c))
> -
> -virDomainEventPtr
> -__virDomainEventCallbackQueuePop(virDomainEventQueuePtr evtQueue);
> -#define virDomainEventCallbackQueuePop(x) __virDomainEventCallbackQueuePop(x)
> -
> -void __virDomainEventQueueFree(virDomainEventQueuePtr queue);
> -#define virDomainEventQueueFree(x) __virDomainEventQueueFree(x)
> -
>  #endif                          /* __VIR_INTERNAL_H__ */
> diff -r 0325a25d1762 src/libvirt.c
> --- a/src/libvirt.c	Wed Oct 29 11:48:08 2008 +0000
> +++ b/src/libvirt.c	Wed Oct 29 12:03:29 2008 +0000
> @@ -5371,207 +5371,6 @@
>      return -1;
>  }
>  
> -/**
> - * __virDomainEventCallbackListFree:
> - * @list: event callback list head
> - *
> - * Free the memory in the domain event callback list
> - */
> -void
> -__virDomainEventCallbackListFree(virDomainEventCallbackListPtr list)
> -{
> -    int i;
> -    for (i=0; i<list->count; i++) {
> -        VIR_FREE(list->callbacks[i]);
> -    }
> -    VIR_FREE(list);
> -}
> -/**
> - * __virDomainEventCallbackListRemove:
> - * @conn: pointer to the connection
> - * @cbList: the list
> - * @callback: the callback to remove
> - *
> - * Internal function to remove a callback from a virDomainEventCallbackListPtr
> - */
> -int
> -__virDomainEventCallbackListRemove(virConnectPtr conn,
> -                                   virDomainEventCallbackListPtr cbList,
> -                                   virConnectDomainEventCallback callback)
> -{
> -    int i;
> -    for (i = 0 ; i < cbList->count ; i++) {
> -        if(cbList->callbacks[i]->cb == callback &&
> -           cbList->callbacks[i]->conn == conn) {
> -            virUnrefConnect(cbList->callbacks[i]->conn);
> -            VIR_FREE(cbList->callbacks[i]);
> -
> -            if (i < (cbList->count - 1))
> -                memmove(cbList->callbacks + i,
> -                        cbList->callbacks + i + 1,
> -                        sizeof(*(cbList->callbacks)) *
> -                                (cbList->count - (i + 1)));
> -
> -            if (VIR_REALLOC_N(cbList->callbacks,
> -                              cbList->count - 1) < 0) {
> -                ; /* Failure to reduce memory allocation isn't fatal */
> -            }
> -            cbList->count--;
> -
> -            return 0;
> -        }
> -    }
> -    return -1;
> -}
> -
> -/**
> - * __virDomainEventCallbackListAdd:
> - * @conn: pointer to the connection
> - * @cbList: the list
> - * @callback: the callback to add
> - * @opaque: opaque data tio pass to callback
> - *
> - * Internal function to add a callback from a virDomainEventCallbackListPtr
> - */
> -int
> -__virDomainEventCallbackListAdd(virConnectPtr conn,
> -                                virDomainEventCallbackListPtr cbList,
> -                                virConnectDomainEventCallback callback,
> -                                void *opaque)
> -{
> -    virDomainEventCallbackPtr event;
> -    int n;
> -
> -    /* Check incoming */
> -    if ( !cbList ) {
> -        return -1;
> -    }
> -
> -    /* check if we already have this callback on our list */
> -    for (n=0; n < cbList->count; n++) {
> -        if(cbList->callbacks[n]->cb == callback &&
> -           conn == cbList->callbacks[n]->conn) {
> -            DEBUG0("WARNING: Callback already tracked");
> -            return -1;
> -        }
> -    }
> -    /* Allocate new event */
> -    if (VIR_ALLOC(event) < 0) {
> -        DEBUG0("Error allocating event");
> -        return -1;
> -    }
> -    event->conn = conn;
> -    event->cb = callback;
> -    event->opaque = opaque;
> -
> -    /* Make space on list */
> -    n = cbList->count;
> -    if (VIR_REALLOC_N(cbList->callbacks, n + 1) < 0) {
> -        DEBUG0("Error reallocating list");
> -        VIR_FREE(event);
> -        return -1;
> -    }
> -
> -    event->conn->refs++;
> -
> -    cbList->callbacks[n] = event;
> -    cbList->count++;
> -    return 0;
> -}
> -
> -/**
> - * __virDomainEventQueueFree:
> - * @queue: pointer to the queue
> - *
> - * Free the memory in the queue. We process this like a list here
> - */
> -void
> -__virDomainEventQueueFree(virDomainEventQueuePtr queue)
> -{
> -    int i;
> -    for ( i=0 ; i<queue->count ; i++ ) {
> -        VIR_FREE(queue->events[i]);
> -    }
> -    VIR_FREE(queue);
> -}
> -
> -/**
> - * __virDomainEventCallbackQueuePop:
> - * @evtQueue: the queue of events
> - *
> - * Internal function to pop off, and return the front of the queue
> - * NOTE: The caller is responsible for freeing the returned object
> - *
> - * Returns: virDomainEventPtr on success NULL on failure.
> - */
> -virDomainEventPtr
> -__virDomainEventCallbackQueuePop(virDomainEventQueuePtr evtQueue)
> -{
> -    virDomainEventPtr ret;
> -
> -    if(!evtQueue || evtQueue->count == 0 )
> -        return NULL;
> -
> -    ret = evtQueue->events[0];
> -
> -    memmove(evtQueue->events,
> -            evtQueue->events + 1,
> -            sizeof(*(evtQueue->events)) *
> -                    (evtQueue->count - 1));
> -
> -    if (VIR_REALLOC_N(evtQueue->events,
> -                        evtQueue->count - 1) < 0) {
> -        ; /* Failure to reduce memory allocation isn't fatal */
> -    }
> -    evtQueue->count--;
> -
> -    return ret;
> -}
> -
> -/**
> - * __virDomainEventCallbackQueuePush:
> - * @evtQueue: the dom event queue
> - * @dom: the domain to add
> - * @event: the event to add
> - *
> - * Internal function to push onto the back of an virDomainEventQueue
> - *
> - * Returns: 0 on success, -1 on failure
> - */
> -int
> -__virDomainEventCallbackQueuePush(virDomainEventQueuePtr evtQueue,
> -                                  virDomainPtr dom,
> -                                  virDomainEventType event)
> -{
> -    virDomainEventPtr domEvent;
> -
> -    /* Check incoming */
> -    if ( !evtQueue ) {
> -        return -1;
> -    }
> -
> -    /* Allocate new event */
> -    if (VIR_ALLOC(domEvent) < 0) {
> -        DEBUG0("Error allocating event");
> -        return -1;
> -    }
> -    domEvent->dom = dom;
> -    domEvent->event = event;
> -
> -    /* Make space on queue */
> -    if (VIR_REALLOC_N(evtQueue->events,
> -                      evtQueue->count + 1) < 0) {
> -        DEBUG0("Error reallocating queue");
> -        VIR_FREE(domEvent);
> -        return -1;
> -    }
> -
> -    evtQueue->events[evtQueue->count] = domEvent;
> -    evtQueue->count++;
> -    return 0;
> -}
> -
> -
>  
>  /************************************************************************
>   *									*
> diff -r 0325a25d1762 src/qemu_conf.h
> --- a/src/qemu_conf.h	Wed Oct 29 11:48:08 2008 +0000
> +++ b/src/qemu_conf.h	Wed Oct 29 12:03:29 2008 +0000
> @@ -31,6 +31,7 @@
>  #include "capabilities.h"
>  #include "network_conf.h"
>  #include "domain_conf.h"
> +#include "domain_event.h"
>  
>  #define qemudDebug(fmt, ...) do {} while(0)
>  
> diff -r 0325a25d1762 src/remote_internal.c
> --- a/src/remote_internal.c	Wed Oct 29 11:48:08 2008 +0000
> +++ b/src/remote_internal.c	Wed Oct 29 12:03:29 2008 +0000
> @@ -75,6 +75,7 @@
>  
>  #include "virterror.h"
>  #include "libvirt.h"
> +#include "domain_event.h"
>  #include "driver.h"
>  #include "buf.h"
>  #include "qparams.h"
> 
> 




More information about the libvir-list mailing list