[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v12 02/17] libxl: refactor disk addition to take a helper
Roger Pau Monne writes ("[PATCH v12 02/17] libxl: refactor disk addition to take a helper"): > Change libxl__device_disk_add to no longer take a xs transaction and > instead pass a helper for the local attach case that's used to get the > free vdev. ... > +static int device_disk_add(libxl__gc *gc, uint32_t domid, > + libxl_device_disk *disk, > + void *get_vdev(libxl__gc *, void *, > + xs_transaction_t), > + void *get_vdev_user) get_vdev needs to return a char*. The point of the void* is that if another caller of device_disk_add needs to use this feature, the type of get_vdev_user may need to be something different for this user; this is why passthrough pointers like this need to be void*s. But another user of this feature will have to have their get_vdev return a char*, since that's how the value is used. So: +static int device_disk_add(libxl__gc *gc, uint32_t domid, + libxl_device_disk *disk, + char *get_vdev(libxl__gc *, void *, + xs_transaction_t), + void *get_vdev_user) > + (void *) libxl__alloc_vdev, This is not permitted. The (malicious) compiler might choose to misoptimise the program as a result. You must not cast a function from one type to another. The actual type of the function must be the same where it is defined and called. So either libxl__alloc_vdev needs to change its type to match, or you need to make a wrapper function which contains the upcast from void* to const char*. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |