libxl: provide typedefs for device framework functions
PATCH 1/1 libxl: provide typedefs for device framework functions
From: Oleksandr Grytsov <[email protected]>
Resend
Oleksandr Grytsov (1):
libxl: remove list callback from device framework
tools/libxl/libxl_checkpoint_device.c | 4 ++-- tools/libxl/libxl_colo_save.c | 2 +- tools/libxl/libxl_device.c | 4 ++-- tools/libxl/libxl_disk.c | 24 ++++-------------------- tools/libxl/libxl_domain.c | 4 ++-- tools/libxl/libxl_internal.h | 30 ++++++++++++++++++++++++------ tools/libxl/libxl_nic.c | 6 +++--- tools/libxl/libxl_pci.c | 2 +- tools/libxl/libxl_vdispl.c | 23 ++--------------------- tools/libxl/libxl_vtpm.c | 23 +++-------------------- 10 files changed, 44 insertions(+), 78 deletions(-)
Signature · 7 lines
2.7.4 _______________________________________________ Xen-devel mailing list [email protected] https://lists.xen.org/xen-devel
PATCH 1/1 libxl: remove list callback from device framework
From: Oleksandr Grytsov <[email protected]>
As we have generic functions to get device list (libxl__device_list) no need to have callback in the framework. To resolve issue when XS entry doesn't match device name, device type is extended with field "entry" which keeps XS entry.
--- tools/libxl/libxl_checkpoint_device.c | 4 ++-- tools/libxl/libxl_colo_save.c | 2 +- tools/libxl/libxl_device.c | 4 ++-- tools/libxl/libxl_disk.c | 24 ++++-------------------- tools/libxl/libxl_domain.c | 4 ++-- tools/libxl/libxl_internal.h | 30 ++++++++++++++++++++++++------ tools/libxl/libxl_nic.c | 6 +++--- tools/libxl/libxl_pci.c | 2 +- tools/libxl/libxl_vdispl.c | 23 ++--------------------- tools/libxl/libxl_vtpm.c | 23 +++-------------------- 10 files changed, 44 insertions(+), 78 deletions(-)
tools/libxl/libxl_checkpoint_device.c +2 -2
@@ -64,11 +64,11 @@ void libxl__checkpoint_devices_setup(libxl__egc *egc,if (cds->device_kind_flags & (1 <<LIBXL__DEVICE_KIND_VIF )) cds->nics =libxl__device_list (gc, &libxl__nic_devtype, cds->domid, -"vif" , &cds->num_nics); + &cds->num_nics);if (cds->device_kind_flags & (1 <<LIBXL__DEVICE_KIND_VBD )) cds->disks =libxl__device_list (gc, &libxl__disk_devtype, cds->domid, -"vbd" , &cds->num_disks); + &cds->num_disks);if (cds->num_nics ==0 && cds->num_disks ==0 ) goto out;
tools/libxl/libxl_colo_save.c +1 -1
@@ -122,7 +122,7 @@ void libxl__colo_save_setup(libxl__egc *egc, libxl__colo_save_state *css)/* Use this args we can connect to qemu colo-compare */ cds->nics =libxl__device_list (gc, &libxl__nic_devtype, - cds->domid,"vif" , &cds->num_nics); + cds->domid, &cds->num_nics);if (cds->num_nics >0 ) { css->cps.checkpoint_host = cds->nics[0 ].colo_checkpoint_host; css->cps.checkpoint_port = cds->nics[0 ].colo_checkpoint_port;
tools/libxl/libxl_device.c +2 -2
@@ -1989,7 +1989,7 @@ out: }void *libxl__device_list (libxl__gc *gc,const struct libxl_device_type *dt, -uint32_t domid,const char * name,int *num) +uint32_t domid,int *num) {void *r =NULL ;void *list =NULL ;
@@ -2002,7 +2002,7 @@ void *libxl__device_list(libxl__gc *gc, const struct libxl_device_type *dt, *num =0 ; libxl_path =GCSPRINTF ("%s/device/%s" , -libxl__xs_libxl_path (gc, domid), name); +libxl__xs_libxl_path (gc, domid), dt->entry); dir =libxl__xs_directory (gc,XBT_NULL , libxl_path, &ndirs);
tools/libxl/libxl_disk.c +4 -20
@@ -622,24 +622,6 @@ out:return rc; } -libxl_device_disk *libxl_device_disk_list (libxl_ctx *ctx,uint32_t domid,int *num) -{ -libxl_device_disk *r; - -GC_INIT (ctx); - - r =libxl__device_list (gc, &libxl__disk_devtype, domid,"vbd" , num); - -GC_FREE ; - -return r; -} - -void libxl_device_disk_list_free (libxl_device_disk *list,int num) -{ -libxl__device_list_free (&libxl__disk_devtype, list, num); -} -int libxl_device_disk_getinfo (libxl_ctx *ctx,uint32_t domid,libxl_device_disk *disk,libxl_diskinfo *diskinfo) {
@@ -741,7 +723,7 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk, goto out; } - disks =libxl__device_list (gc, &libxl__disk_devtype, domid,"vbd" , &num); + disks =libxl__device_list (gc, &libxl__disk_devtype, domid, &num);for (i =0 ; i < num; i++) {if (disks[i].is_cdrom && !strcmp (disk->vdev, disks[i].vdev)) {
@@ -1201,9 +1183,11 @@ static int libxl_device_disk_dm_needed(void *e, unsigned domid) elem->backend_domid == domid; } +LIBXL_DEFINE_DEVICE_LIST(disk) +#define libxl__device_disk_update_devid NULL -DEFINE_DEVICE_TYPE_STRUCT(disk, +DEFINE_DEVICE_TYPE_STRUCT_X(disk, disk, vbd, .merge = libxl_device_disk_merge, .dm_needed = libxl_device_disk_dm_needed, .from_xenstore = (device_from_xenstore_fn_t)libxl__disk_from_xenstore,
tools/libxl/libxl_domain.c +2 -2
@@ -1679,11 +1679,11 @@ int libxl_retrieve_domain_configuration(libxl_ctx *ctx, uint32_t domid,if (!dt)break ; -if (!dt->list || !dt->compare) +if (!dt->compare)continue ; num_dev =libxl__device_type_get_num (dt, d_config); - p = dt->list (CTX , domid, &num); + p =libxl__device_list (gc, dt, domid, &num);if (p ==NULL ) {LOGD (DEBUG , domid,"No %s from xenstore" , dt->type);
tools/libxl/libxl_internal.h +24 -6
@@ -3461,9 +3461,27 @@ _hidden void libxl__bootloader_run(libxl__egc*, libxl__bootloader_state *st); LIBXL_DEFINE_DEVICE_REMOVE_EXT(type, type, remove, 0) \ LIBXL_DEFINE_DEVICE_REMOVE_EXT(type, type, destroy, 1) +#define LIBXL_DEFINE_DEVICE_LIST (type) \ + libxl_device_##type *libxl_device_##type##_list(libxl_ctx *ctx, \ + uint32_t domid, \ + int *num) \ + { \ + libxl_device_##type *r; \ + GC_INIT(ctx); \ + r = libxl__device_list(gc, &libxl__##type##_devtype, \ + domid, num); \ + GC_FREE; \ + return r; \ + } \ + \ + void libxl_device_##type##_list_free(libxl_device_##type *list, \ + int num) \ + { \ + libxl__device_list_free(&libxl__##type##_devtype, list, num); \ + } +typedef void (*device_add_fn_t )(libxl__egc *,libxl__ao *,uint32_t ,libxl_domain_config *,libxl__multidev *); -typedef void *(*device_list_fn_t )(libxl_ctx *,uint32_t ,int *);typedef int (*device_set_default_fn_t )(libxl__gc *,uint32_t ,void *,bool );typedef int (*device_to_device_fn_t )(libxl__gc *,uint32_t ,void *,libxl__device *);
@@ -3483,12 +3501,12 @@ typedef int (*device_set_xenstore_config_fn_t)(libxl__gc *, uint32_t, void *,struct libxl_device_type {char *type; +char *entry;int skip_attach;/* Skip entry in domcreate_attach_devices() if 1 */ int ptr_offset;/* Offset of device array ptr in libxl_domain_config */ int num_offset;/* Offset of # of devices in libxl_domain_config */ int dev_elem_size;/* Size of one device element in array */ device_add_fn_t add; -device_list_fn_t list;device_set_default_fn_t set_default;device_to_device_fn_t to_device;device_init_fn_t init;
@@ -3503,14 +3521,14 @@ struct libxl_device_type {device_set_xenstore_config_fn_t set_xenstore_config; }; -#define DEFINE_DEVICE_TYPE_STRUCT_X (name, sname, ...) \ +#define DEFINE_DEVICE_TYPE_STRUCT_X (name, sname, sentry, ...) \ const struct libxl_device_type libxl__ ## name ## _devtype = { \ .type = #sname, \ + .entry = #sentry, \ .ptr_offset = offsetof(libxl_domain_config, name ## s), \ .num_offset = offsetof(libxl_domain_config, num_ ## name ## s), \ .dev_elem_size = sizeof(libxl_device_ ## sname), \ .add = libxl__add_ ## name ## s, \ - .list = (device_list_fn_t)libxl_device_ ## sname ## _list, \ .set_default = (device_set_default_fn_t) \ libxl__device_ ## sname ## _setdefault, \ .to_device = (device_to_device_fn_t)libxl__device_from_ ## name, \
@@ -3526,7 +3544,7 @@ struct libxl_device_type { }#define DEFINE_DEVICE_TYPE_STRUCT (name, ...) \ - DEFINE_DEVICE_TYPE_STRUCT_X(name, name, __VA_ARGS__) + DEFINE_DEVICE_TYPE_STRUCT_X(name, name, name, __VA_ARGS__)static inline void **libxl__device_type_get_ptr (const struct libxl_device_type *dt,const libxl_domain_config *d_config)
@@ -4338,7 +4356,7 @@ int libxl__device_add(libxl__gc *gc, uint32_t domid,* libxl__device_list_free */ void *libxl__device_list (libxl__gc *gc,const struct libxl_device_type *dt, -uint32_t domid,const char * name,int *num); +uint32_t domid,int *num);void libxl__device_list_free (const struct libxl_device_type *dt,void *list,int num);#endif
tools/libxl/libxl_nic.c +3 -3
@@ -29,7 +29,7 @@ int libxl_mac_to_device_nic(libxl_ctx *ctx, uint32_t domid,if (rc)return rc; - nics =libxl__device_list (gc, &libxl__nic_devtype, domid,"vif" , &nb); + nics =libxl__device_list (gc, &libxl__nic_devtype, domid, &nb);if (!nics)return ERROR_FAIL ;
@@ -426,7 +426,7 @@ libxl_device_nic *libxl_device_nic_list(libxl_ctx *ctx, uint32_t domid, int *numGC_INIT (ctx); - r =libxl__device_list (gc, &libxl__nic_devtype, domid,"vif" , num); + r =libxl__device_list (gc, &libxl__nic_devtype, domid, num);GC_FREE ;
@@ -540,7 +540,7 @@ LIBXL_DEFINE_DEVICE_ADD(nic)LIBXL_DEFINE_DEVICES_ADD (nic)LIBXL_DEFINE_DEVICE_REMOVE (nic ) -DEFINE_DEVICE_TYPE_STRUCT (nic, +DEFINE_DEVICE_TYPE_STRUCT_X (nic, nic, vif, .update_config = libxl_device_nic_update_config, .from_xenstore = (device_from_xenstore_fn_t)libxl__nic_from_xenstore, .set_xenstore_config = (device_set_xenstore_config_fn_t)
tools/libxl/libxl_pci.c +1 -1
@@ -1682,7 +1682,7 @@ static int libxl_device_pci_compare(libxl_device_pci *d1,#define libxl__device_pci_update_devid NULL -DEFINE_DEVICE_TYPE_STRUCT_X (pcidev, pci); +DEFINE_DEVICE_TYPE_STRUCT_X (pcidev, pci, pci);/* * Local variables:
tools/libxl/libxl_vdispl.c +2 -21
@@ -94,25 +94,6 @@ static int libxl__set_xenstore_vdispl(libxl__gc *gc, uint32_t domid,return 0 ; } -libxl_device_vdispl *libxl_device_vdispl_list (libxl_ctx *ctx,uint32_t domid, -int *num) -{ -libxl_device_vdispl *r; - -GC_INIT (ctx); - - r =libxl__device_list (gc, &libxl__vdispl_devtype, domid,"vdispl" , num); - -GC_FREE ; - -return r; -} - -void libxl_device_vdispl_list_free (libxl_device_vdispl * list,int num) -{ -libxl__device_list_free (&libxl__vdispl_devtype, list, num); -} -static int libxl__device_vdispl_getconnectors (libxl_ctx *ctx,const char *path,libxl_vdisplinfo *info)
@@ -239,8 +220,7 @@ int libxl_devid_to_device_vdispl(libxl_ctx *ctx, uint32_t domid,libxl_device_vdispl_init (vdispl); - vdispls =libxl__device_list (gc, &libxl__vdispl_devtype, - domid,"vdispl" , &n); + vdispls =libxl__device_list (gc, &libxl__vdispl_devtype, domid, &n);if (!vdispls) { rc =ERROR_NOTFOUND ; goto out; }
@@ -267,6 +247,7 @@ LIBXL_DEFINE_DEVICE_ADD(vdispl)static LIBXL_DEFINE_DEVICES_ADD (vdispl)LIBXL_DEFINE_DEVICE_REMOVE (vdispl ) static LIBXL_DEFINE_UPDATE_DEVID(vdispl, "vdispl") +LIBXL_DEFINE_DEVICE_LIST (vdispl)DEFINE_DEVICE_TYPE_STRUCT (vdispl, .update_config = (device_update_config_fn_t)libxl__update_config_vdispl,
tools/libxl/libxl_vtpm.c +3 -20
@@ -104,24 +104,6 @@ static int libxl__vtpm_from_xenstore(libxl__gc *gc, const char *libxl_path,return 0 ; } -libxl_device_vtpm *libxl_device_vtpm_list (libxl_ctx *ctx,uint32_t domid,int *num) -{ -libxl_device_vtpm *r; - -GC_INIT (ctx); - - r =libxl__device_list (gc, &libxl__vtpm_devtype, domid,"vtpm" , num); - -GC_FREE ; - -return r; -} - -void libxl_device_vtpm_list_free (libxl_device_vtpm * list,int num) -{ -libxl__device_list_free (&libxl__vtpm_devtype, list, num); -} - int libxl_device_vtpm_getinfo(libxl_ctx *ctx, uint32_t domid, libxl_device_vtpm *vtpm,
@@ -196,7 +178,7 @@ int libxl_devid_to_device_vtpm(libxl_ctx *ctx,int nb, i;int rc; - vtpms =libxl__device_list (gc, &libxl__vtpm_devtype, domid,"vtpm" , &nb); + vtpms =libxl__device_list (gc, &libxl__vtpm_devtype, domid, &nb);if (!vtpms)return ERROR_FAIL ;
@@ -231,7 +213,7 @@ int libxl_uuid_to_device_vtpm(libxl_ctx *ctx, uint32_t domid,int nb, i;int rc; - vtpms =libxl__device_list (gc, &libxl__vtpm_devtype, domid,"vtpm" , &nb); + vtpms =libxl__device_list (gc, &libxl__vtpm_devtype, domid, &nb);if (!vtpms)return ERROR_FAIL ;
@@ -260,6 +242,7 @@ static void libxl_device_vtpm_update_config(libxl__gc *gc, void *d, void *s) LIBXL_DEFINE_DEVICE_ADD(vtpm) static LIBXL_DEFINE_DEVICES_ADD(vtpm) LIBXL_DEFINE_DEVICE_REMOVE(vtpm) +LIBXL_DEFINE_DEVICE_LIST(vtpm) DEFINE_DEVICE_TYPE_STRUCT(vtpm, .update_config = libxl_device_vtpm_update_config,
Signature · 7 lines
2.7.4 _______________________________________________ Xen-devel mailing list [email protected] https://lists.xen.org/xen-devel
Re: [PATCH v1] libxl: remove list callback from device framework
Quoted 9 lines · Oleksandr Grytsov
From: Oleksandr Grytsov <[email protected]>
As we have generic functions to get device list (
libxl__device_list) no need to have callback in the framework. To resolve issue when XS entry doesn't match device name, device type is extended with field "entry" which keeps XS entry.Signed-off-by Oleksandr Grytsov <[email protected]>
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xen.org/xen-devel
Re: [PATCH v1] libxl: remove list callback from device framework
Quoted 9 lines · Wei Liu
Quoted 8 lines · Oleksandr Grytsov
From: Oleksandr Grytsov <[email protected]>
As we have generic functions to get device list (
libxl__device_list) no need to have callback in the framework. To resolve issue when XS entry doesn't match device name, device type is extended with field "entry" which keeps XS entry.
Quoted 3 lines
Quoted 1 line
Signed-off-by Oleksandr Grytsov <[email protected]>Acked-by Wei Liu <[email protected]>
Shall I resend the patch with your ack?
Signature · 7 lines
Best Regards, Oleksandr Grytsov. _______________________________________________ Xen-devel mailing list [email protected] https://lists.xen.org/xen-devel
Re: [PATCH v1] libxl: remove list callback from device framework
Quoted 10 lines · Oleksandr Grytsov
Quoted 9 lines · Wei Liu
Quoted 8 lines · Oleksandr Grytsov
From: Oleksandr Grytsov <[email protected]>
As we have generic functions to get device list (
libxl__device_list) no need to have callback in the framework. To resolve issue when XS entry doesn't match device name, device type is extended with field "entry" which keeps XS entry.
Quoted 5 lines
Quoted 3 lines
Quoted 1 line
Signed-off-by Oleksandr Grytsov <[email protected]>Acked-by Wei Liu <[email protected]>Shall I resend the patch with your ack?
If this is the final that I can apply, then no; otherwise please resend.
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xen.org/xen-devel
Re: [PATCH v1] libxl: remove list callback from device framework
Quoted 11 lines · Wei Liu
Quoted 10 lines · Oleksandr Grytsov
Quoted 9 lines · Wei Liu
Quoted 8 lines · Oleksandr Grytsov
From: Oleksandr Grytsov <[email protected]>
As we have generic functions to get device list (
libxl__device_list) no need to have callback in the framework. To resolve issue when XS entry doesn't match device name, device type is extended with field "entry" which keeps XS entry.
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
Quoted 1 line
Signed-off-by Oleksandr Grytsov <[email protected]>Acked-by Wei Liu <[email protected]>Shall I resend the patch with your ack?
If this is the final that I can apply, then no; otherwise please resend.
It is final.
Signature · 7 lines
Best Regards, Oleksandr Grytsov. _______________________________________________ Xen-devel mailing list [email protected] https://lists.xen.org/xen-devel