[libvirt] [PATCH 2/8] Return count of callbacks when registering callbacks
Eric Blake
eblake at redhat.com
Wed Dec 14 18:58:57 UTC 2011
On 12/13/2011 05:38 PM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
>
> When registering a callback for a particular event some callers
> need to know how many callbacks already exist for that event.
> While it is possible to ask for a count, this is not free from
> race conditions when threaded. Thus the API for registering
> callbacks should return the count of callbacks
>
I think this needs to swap places with the previous patch, and pick up
the hunks that I questioned there.
> * src/conf/domain_event.c, src/conf/domain_event.h,
> src/libvirt_private.syms: Return count of callbacks when
> registering callbacks
> * src/libxl/libxl_driver.c, src/libxl/libxl_driver.c,
> src/qemu/qemu_driver.c, src/remote/remote_driver.c,
> src/remote/remote_driver.c, src/uml/uml_driver.c,
> src/vbox/vbox_tmpl.c, src/xen/xen_driver.c: Update
> for change in APIs
The changes themselves make sense. I had a minor merge conflict with my
own resolution to the compile errors left over in 1/8 and this patch,
due to an indentation problem.
> ---
> src/conf/domain_event.c | 23 ++++++++++++++++++-----
> src/conf/domain_event.h | 3 ++-
> src/libvirt_private.syms | 2 +-
> src/libxl/libxl_driver.c | 15 ++++++++-------
> src/lxc/lxc_driver.c | 15 ++++++++-------
> src/qemu/qemu_driver.c | 15 ++++++++-------
> src/remote/remote_driver.c | 33 ++++++++++++++++-----------------
> src/test/test_driver.c | 15 ++++++++-------
> src/uml/uml_driver.c | 15 ++++++++-------
> src/vbox/vbox_tmpl.c | 15 ++++++++-------
> src/xen/xen_driver.c | 13 +++++++------
> 11 files changed, 92 insertions(+), 72 deletions(-)
>
> +++ b/src/libxl/libxl_driver.c
> @@ -3851,10 +3851,11 @@ libxlDomainEventRegisterAny(virConnectPtr conn, virDomainPtr dom, int eventID,
> int ret;
>
> libxlDriverLock(driver);
> - ret = virDomainEventCallbackListAddID(conn,
> - driver->domainEventState->callbacks,
> - dom, eventID, callback, opaque,
> - freecb);
> + if (virDomainEventCallbackListAddID(conn,
> + driver->domainEventState->callbacks,
> + dom, eventID, callback, opaque,
> + freecb, &ret) < 0)
> + ret = -1;
Should we make virDomainEventCallbackListAddID guarantee that the
callbackID argument, if non-NULL, is set to -1 on failure?
> @@ -7312,7 +7313,7 @@ static int vboxDomainEventDeregisterAny(virConnectPtr conn,
> */
> vboxDriverLock(data);
>
> - cnt = virDomainEventStateDeregisterAny(conn, data->domainEvents,
> + cnt = virDomainEventStateDeregisterID(conn, data->domainEvents,
> callbackID);
Indentation.
ACK.
--
Eric Blake eblake at redhat.com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20111214/53398659/attachment-0001.sig>
More information about the libvir-list
mailing list