[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v6 04/13] libxl: move bootloader data strucutres and prototypes
Move bootloader and related data after all the device stuff, since libxl__bootloader_state will depend on libxl__ao_device (to perform the local attach of a device). This is pure code motion. Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxx> --- tools/libxl/libxl_internal.h | 166 +++++++++++++++++++++--------------------- 1 files changed, 83 insertions(+), 83 deletions(-) diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 8478606..0000d6b 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1692,6 +1692,89 @@ _hidden const char *libxl__xen_script_dir_path(void); _hidden const char *libxl__lock_dir_path(void); _hidden const char *libxl__run_dir_path(void); +/*----- device addition/removal -----*/ + +/* Action to perform (either connect or disconnect) */ +typedef enum { + DEVICE_CONNECT, + DEVICE_DISCONNECT +} libxl__device_action; + +typedef struct libxl__ao_device libxl__ao_device; +typedef struct libxl__ao_devices libxl__ao_devices; +typedef void libxl__device_callback(libxl__egc*, libxl__ao_device*); + +/* This functions sets the necessary libxl__ao_device struct values to use + * safely inside functions. It marks the operation as "active" + * since we need to be sure that all device status structs are set + * to active before start queueing events, or we might call + * ao_complete before all devices had finished + * + * libxl__initiate_device_{remove/addition} should not be called without + * calling libxl__prepare_ao_device first, since it initializes the private + * fields of the struct libxl__ao_device to what this functions expect. + * + * Once _prepare has been called on a libxl__ao_device, it is safe to just + * discard this struct, there's no need to call any destroy function. + * _prepare can also be called multiple times with the same libxl__ao_device. + */ +_hidden void libxl__prepare_ao_device(libxl__ao *ao, libxl__ao_device *aodev); + +/* Prepare a bunch of devices for addition/removal. Every ao_device in + * ao_devices is set to 'active', and the ao_device 'base' filed is set to + * the one pointed by aodevs. + */ +_hidden void libxl__prepare_ao_devices(libxl__ao *ao, + libxl__ao_devices *aodevs); + +/* Generic callback to use when adding/removing several devices, this will + * check if the given aodev is the last one, and call the callback in the + * parent libxl__ao_devices struct, passing the appropiate error if found. + */ +_hidden void libxl__ao_devices_callback(libxl__egc *egc, + libxl__ao_device *aodev); + +struct libxl__ao_device { + /* filled in by user */ + libxl__ao *ao; + libxl__device_action action; + libxl__device *dev; + int force; + libxl__device_callback *callback; + /* private for implementation */ + int active; + int rc; + libxl__ev_devstate backend_ds; + /* Used internally to have a reference to the upper libxl__ao_devices + * struct when present */ + libxl__ao_devices *aodevs; +}; + +/* Helper struct to simply the plug/unplug of multiple devices at the same + * time. + * + * This structure holds several devices, and the callback is only called + * when all the devices inside of the array have finished. + */ +typedef void libxl__devices_callback(libxl__egc*, libxl__ao_devices*, int rc); +struct libxl__ao_devices { + libxl__ao_device *array; + int size; + libxl__devices_callback *callback; +}; + +/* Arranges that dev will be removed to the guest, and the + * hotplug scripts will be executed (if necessary). When + * this is done (or an error happens), the callback in + * aodev->callback will be called. + * + * The libxl__ao_device passed to this function should be + * prepared using libxl__prepare_ao_device prior to calling + * this function. + */ +_hidden void libxl__initiate_device_remove(libxl__egc *egc, + libxl__ao_device *aodev); + /*----- datacopier: copies data from one fd to another -----*/ typedef struct libxl__datacopier_state libxl__datacopier_state; @@ -1818,89 +1901,6 @@ _hidden void libxl__bootloader_init(libxl__bootloader_state *bl); * If callback is passed rc==0, will have updated st->info appropriately */ _hidden void libxl__bootloader_run(libxl__egc*, libxl__bootloader_state *st); -/*----- device addition/removal -----*/ - -/* Action to perform (either connect or disconnect) */ -typedef enum { - DEVICE_CONNECT, - DEVICE_DISCONNECT -} libxl__device_action; - -typedef struct libxl__ao_device libxl__ao_device; -typedef struct libxl__ao_devices libxl__ao_devices; -typedef void libxl__device_callback(libxl__egc*, libxl__ao_device*); - -/* This functions sets the necessary libxl__ao_device struct values to use - * safely inside functions. It marks the operation as "active" - * since we need to be sure that all device status structs are set - * to active before start queueing events, or we might call - * ao_complete before all devices had finished - * - * libxl__initiate_device_{remove/addition} should not be called without - * calling libxl__prepare_ao_device first, since it initializes the private - * fields of the struct libxl__ao_device to what this functions expect. - * - * Once _prepare has been called on a libxl__ao_device, it is safe to just - * discard this struct, there's no need to call any destroy function. - * _prepare can also be called multiple times with the same libxl__ao_device. - */ -_hidden void libxl__prepare_ao_device(libxl__ao *ao, libxl__ao_device *aodev); - -/* Prepare a bunch of devices for addition/removal. Every ao_device in - * ao_devices is set to 'active', and the ao_device 'base' filed is set to - * the one pointed by aodevs. - */ -_hidden void libxl__prepare_ao_devices(libxl__ao *ao, - libxl__ao_devices *aodevs); - -/* Generic callback to use when adding/removing several devices, this will - * check if the given aodev is the last one, and call the callback in the - * parent libxl__ao_devices struct, passing the appropiate error if found. - */ -_hidden void libxl__ao_devices_callback(libxl__egc *egc, - libxl__ao_device *aodev); - -struct libxl__ao_device { - /* filled in by user */ - libxl__ao *ao; - libxl__device_action action; - libxl__device *dev; - int force; - libxl__device_callback *callback; - /* private for implementation */ - int active; - int rc; - libxl__ev_devstate backend_ds; - /* Used internally to have a reference to the upper libxl__ao_devices - * struct when present */ - libxl__ao_devices *aodevs; -}; - -/* Helper struct to simply the plug/unplug of multiple devices at the same - * time. - * - * This structure holds several devices, and the callback is only called - * when all the devices inside of the array have finished. - */ -typedef void libxl__devices_callback(libxl__egc*, libxl__ao_devices*, int rc); -struct libxl__ao_devices { - libxl__ao_device *array; - int size; - libxl__devices_callback *callback; -}; - -/* Arranges that dev will be removed to the guest, and the - * hotplug scripts will be executed (if necessary). When - * this is done (or an error happens), the callback in - * aodev->callback will be called. - * - * The libxl__ao_device passed to this function should be - * prepared using libxl__prepare_ao_device prior to calling - * this function. - */ -_hidden void libxl__initiate_device_remove(libxl__egc *egc, - libxl__ao_device *aodev); - /*----- Domain destruction -----*/ /* Domain destruction has been split into two functions: -- 1.7.7.5 (Apple Git-26) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |