multidev->preparation = libxl__multidev_prepare(multidev);
}
-static void multidev_one_callback(libxl__egc *egc, libxl__ao_device *aodev);
-
libxl__ao_device *libxl__multidev_prepare(libxl__multidev *multidev) {
STATE_AO_GC(multidev->ao);
libxl__ao_device *aodev;
GCNEW(aodev);
aodev->multidev = multidev;
- aodev->callback = multidev_one_callback;
+ aodev->callback = libxl__multidev_one_callback;
libxl__prepare_ao_device(ao, aodev);
if (multidev->used >= multidev->allocd) {
return aodev;
}
-static void multidev_one_callback(libxl__egc *egc, libxl__ao_device *aodev)
+void libxl__multidev_one_callback(libxl__egc *egc, libxl__ao_device *aodev)
{
STATE_AO_GC(aodev->ao);
libxl__multidev *multidev = aodev->multidev;
libxl__multidev *multidev, int rc)
{
multidev->preparation->rc = rc;
- multidev_one_callback(egc, multidev->preparation);
+ libxl__multidev_one_callback(egc, multidev->preparation);
}
/******************************************************************************/
* Then zero or more times
* libxl__multidev_prepare
* libxl__initiate_device_{remove/addition}
- * (or some other thing which will eventually call aodev->callback)
+ * (or some other thing which will eventually call
+ * aodev->callback or libxl__multidev_one_callback)
* Finally, once
* libxl__multidev_prepared
* which will result (perhaps reentrantly) in one call to
* had ->callback set. The user should not mess with aodev->callback. */
_hidden libxl__ao_device *libxl__multidev_prepare(libxl__multidev*);
+/* Indicates to multidev that this one device has been processed.
+ * Normally the multidev user does not need to touch this function, as
+ * multidev_prepare will name it in aodev->callback. However, if you
+ * want to do something more complicated you can set aodev->callback
+ * yourself to something else, so long as you eventually call
+ * libxl__multidev_one_callback.
+ */
+_hidden void libxl__multidev_one_callback(libxl__egc *egc,
+ libxl__ao_device *aodev);
+
/* Notifies the multidev machinery that we have now finished preparing
* and initiating devices. multidev->callback may then be called as
* soon as there are no prepared but not completed operations