xen: remove DEFINE_XENBUS_DRIVER() macro
The DEFINE_XENBUS_DRIVER() macro looks a bit weird and causes sparse errors. Replace the uses with standard structure definitions instead. This is similar to pci and usb device registration. Signed-off-by: David Vrabel <david.vrabel@citrix.com>
This commit is contained in:
parent
305559f165
commit
95afae4814
@ -907,22 +907,17 @@ static int connect_ring(struct backend_info *be)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ** Driver Registration ** */
|
|
||||||
|
|
||||||
|
|
||||||
static const struct xenbus_device_id xen_blkbk_ids[] = {
|
static const struct xenbus_device_id xen_blkbk_ids[] = {
|
||||||
{ "vbd" },
|
{ "vbd" },
|
||||||
{ "" }
|
{ "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct xenbus_driver xen_blkbk_driver = {
|
||||||
static DEFINE_XENBUS_DRIVER(xen_blkbk, ,
|
.ids = xen_blkbk_ids,
|
||||||
.probe = xen_blkbk_probe,
|
.probe = xen_blkbk_probe,
|
||||||
.remove = xen_blkbk_remove,
|
.remove = xen_blkbk_remove,
|
||||||
.otherend_changed = frontend_changed
|
.otherend_changed = frontend_changed
|
||||||
);
|
};
|
||||||
|
|
||||||
|
|
||||||
int xen_blkif_xenbus_init(void)
|
int xen_blkif_xenbus_init(void)
|
||||||
{
|
{
|
||||||
|
@ -2055,13 +2055,14 @@ static const struct xenbus_device_id blkfront_ids[] = {
|
|||||||
{ "" }
|
{ "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(blkfront, ,
|
static struct xenbus_driver blkfront_driver = {
|
||||||
|
.ids = blkfront_ids,
|
||||||
.probe = blkfront_probe,
|
.probe = blkfront_probe,
|
||||||
.remove = blkfront_remove,
|
.remove = blkfront_remove,
|
||||||
.resume = blkfront_resume,
|
.resume = blkfront_resume,
|
||||||
.otherend_changed = blkback_changed,
|
.otherend_changed = blkback_changed,
|
||||||
.is_ready = blkfront_is_ready,
|
.is_ready = blkfront_is_ready,
|
||||||
);
|
};
|
||||||
|
|
||||||
static int __init xlblk_init(void)
|
static int __init xlblk_init(void)
|
||||||
{
|
{
|
||||||
|
@ -367,12 +367,13 @@ static const struct xenbus_device_id tpmfront_ids[] = {
|
|||||||
};
|
};
|
||||||
MODULE_ALIAS("xen:vtpm");
|
MODULE_ALIAS("xen:vtpm");
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(tpmfront, ,
|
static struct xenbus_driver tpmfront_driver = {
|
||||||
|
.ids = tpmfront_ids,
|
||||||
.probe = tpmfront_probe,
|
.probe = tpmfront_probe,
|
||||||
.remove = tpmfront_remove,
|
.remove = tpmfront_remove,
|
||||||
.resume = tpmfront_resume,
|
.resume = tpmfront_resume,
|
||||||
.otherend_changed = backend_changed,
|
.otherend_changed = backend_changed,
|
||||||
);
|
};
|
||||||
|
|
||||||
static int __init xen_tpmfront_init(void)
|
static int __init xen_tpmfront_init(void)
|
||||||
{
|
{
|
||||||
|
@ -365,12 +365,13 @@ static const struct xenbus_device_id xenkbd_ids[] = {
|
|||||||
{ "" }
|
{ "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(xenkbd, ,
|
static struct xenbus_driver xenkbd_driver = {
|
||||||
|
.ids = xenkbd_ids,
|
||||||
.probe = xenkbd_probe,
|
.probe = xenkbd_probe,
|
||||||
.remove = xenkbd_remove,
|
.remove = xenkbd_remove,
|
||||||
.resume = xenkbd_resume,
|
.resume = xenkbd_resume,
|
||||||
.otherend_changed = xenkbd_backend_changed,
|
.otherend_changed = xenkbd_backend_changed,
|
||||||
);
|
};
|
||||||
|
|
||||||
static int __init xenkbd_init(void)
|
static int __init xenkbd_init(void)
|
||||||
{
|
{
|
||||||
|
@ -937,22 +937,18 @@ static int read_xenbus_vif_flags(struct backend_info *be)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ** Driver Registration ** */
|
|
||||||
|
|
||||||
|
|
||||||
static const struct xenbus_device_id netback_ids[] = {
|
static const struct xenbus_device_id netback_ids[] = {
|
||||||
{ "vif" },
|
{ "vif" },
|
||||||
{ "" }
|
{ "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct xenbus_driver netback_driver = {
|
||||||
static DEFINE_XENBUS_DRIVER(netback, ,
|
.ids = netback_ids,
|
||||||
.probe = netback_probe,
|
.probe = netback_probe,
|
||||||
.remove = netback_remove,
|
.remove = netback_remove,
|
||||||
.uevent = netback_uevent,
|
.uevent = netback_uevent,
|
||||||
.otherend_changed = frontend_changed,
|
.otherend_changed = frontend_changed,
|
||||||
);
|
};
|
||||||
|
|
||||||
int xenvif_xenbus_init(void)
|
int xenvif_xenbus_init(void)
|
||||||
{
|
{
|
||||||
|
@ -2300,12 +2300,6 @@ static void xennet_sysfs_delif(struct net_device *netdev)
|
|||||||
|
|
||||||
#endif /* CONFIG_SYSFS */
|
#endif /* CONFIG_SYSFS */
|
||||||
|
|
||||||
static const struct xenbus_device_id netfront_ids[] = {
|
|
||||||
{ "vif" },
|
|
||||||
{ "" }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static int xennet_remove(struct xenbus_device *dev)
|
static int xennet_remove(struct xenbus_device *dev)
|
||||||
{
|
{
|
||||||
struct netfront_info *info = dev_get_drvdata(&dev->dev);
|
struct netfront_info *info = dev_get_drvdata(&dev->dev);
|
||||||
@ -2338,12 +2332,18 @@ static int xennet_remove(struct xenbus_device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(netfront, ,
|
static const struct xenbus_device_id netfront_ids[] = {
|
||||||
|
{ "vif" },
|
||||||
|
{ "" }
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct xenbus_driver netfront_driver = {
|
||||||
|
.ids = netfront_ids,
|
||||||
.probe = netfront_probe,
|
.probe = netfront_probe,
|
||||||
.remove = xennet_remove,
|
.remove = xennet_remove,
|
||||||
.resume = netfront_resume,
|
.resume = netfront_resume,
|
||||||
.otherend_changed = netback_changed,
|
.otherend_changed = netback_changed,
|
||||||
);
|
};
|
||||||
|
|
||||||
static int __init netif_init(void)
|
static int __init netif_init(void)
|
||||||
{
|
{
|
||||||
|
@ -1136,11 +1136,13 @@ static const struct xenbus_device_id xenpci_ids[] = {
|
|||||||
{""},
|
{""},
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(xenpci, "pcifront",
|
static struct xenbus_driver xenpci_driver = {
|
||||||
|
.name = "pcifront",
|
||||||
|
.ids = xenpci_ids,
|
||||||
.probe = pcifront_xenbus_probe,
|
.probe = pcifront_xenbus_probe,
|
||||||
.remove = pcifront_xenbus_remove,
|
.remove = pcifront_xenbus_remove,
|
||||||
.otherend_changed = pcifront_backend_changed,
|
.otherend_changed = pcifront_backend_changed,
|
||||||
);
|
};
|
||||||
|
|
||||||
static int __init pcifront_init(void)
|
static int __init pcifront_init(void)
|
||||||
{
|
{
|
||||||
|
@ -998,11 +998,12 @@ static const struct xenbus_device_id scsifront_ids[] = {
|
|||||||
{ "" }
|
{ "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(scsifront, ,
|
static struct xenbus_driver scsifront_driver = {
|
||||||
|
.ids = scsifront_ids,
|
||||||
.probe = scsifront_probe,
|
.probe = scsifront_probe,
|
||||||
.remove = scsifront_remove,
|
.remove = scsifront_remove,
|
||||||
.otherend_changed = scsifront_backend_changed,
|
.otherend_changed = scsifront_backend_changed,
|
||||||
);
|
};
|
||||||
|
|
||||||
static int __init scsifront_init(void)
|
static int __init scsifront_init(void)
|
||||||
{
|
{
|
||||||
|
@ -347,8 +347,6 @@ static int xen_console_remove(struct xencons_info *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_HVC_XEN_FRONTEND
|
#ifdef CONFIG_HVC_XEN_FRONTEND
|
||||||
static struct xenbus_driver xencons_driver;
|
|
||||||
|
|
||||||
static int xencons_remove(struct xenbus_device *dev)
|
static int xencons_remove(struct xenbus_device *dev)
|
||||||
{
|
{
|
||||||
return xen_console_remove(dev_get_drvdata(&dev->dev));
|
return xen_console_remove(dev_get_drvdata(&dev->dev));
|
||||||
@ -502,13 +500,14 @@ static const struct xenbus_device_id xencons_ids[] = {
|
|||||||
{ "" }
|
{ "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct xenbus_driver xencons_driver = {
|
||||||
static DEFINE_XENBUS_DRIVER(xencons, "xenconsole",
|
.name = "xenconsole",
|
||||||
|
.ids = xencons_ids,
|
||||||
.probe = xencons_probe,
|
.probe = xencons_probe,
|
||||||
.remove = xencons_remove,
|
.remove = xencons_remove,
|
||||||
.resume = xencons_resume,
|
.resume = xencons_resume,
|
||||||
.otherend_changed = xencons_backend_changed,
|
.otherend_changed = xencons_backend_changed,
|
||||||
);
|
};
|
||||||
#endif /* CONFIG_HVC_XEN_FRONTEND */
|
#endif /* CONFIG_HVC_XEN_FRONTEND */
|
||||||
|
|
||||||
static int __init xen_hvc_init(void)
|
static int __init xen_hvc_init(void)
|
||||||
|
@ -684,12 +684,13 @@ static const struct xenbus_device_id xenfb_ids[] = {
|
|||||||
{ "" }
|
{ "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(xenfb, ,
|
static struct xenbus_driver xenfb_driver = {
|
||||||
|
.ids = xenfb_ids,
|
||||||
.probe = xenfb_probe,
|
.probe = xenfb_probe,
|
||||||
.remove = xenfb_remove,
|
.remove = xenfb_remove,
|
||||||
.resume = xenfb_resume,
|
.resume = xenfb_resume,
|
||||||
.otherend_changed = xenfb_backend_changed,
|
.otherend_changed = xenfb_backend_changed,
|
||||||
);
|
};
|
||||||
|
|
||||||
static int __init xenfb_init(void)
|
static int __init xenfb_init(void)
|
||||||
{
|
{
|
||||||
|
@ -719,11 +719,13 @@ static const struct xenbus_device_id xen_pcibk_ids[] = {
|
|||||||
{""},
|
{""},
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(xen_pcibk, DRV_NAME,
|
static struct xenbus_driver xen_pcibk_driver = {
|
||||||
|
.name = DRV_NAME,
|
||||||
|
.ids = xen_pcibk_ids,
|
||||||
.probe = xen_pcibk_xenbus_probe,
|
.probe = xen_pcibk_xenbus_probe,
|
||||||
.remove = xen_pcibk_xenbus_remove,
|
.remove = xen_pcibk_xenbus_remove,
|
||||||
.otherend_changed = xen_pcibk_frontend_changed,
|
.otherend_changed = xen_pcibk_frontend_changed,
|
||||||
);
|
};
|
||||||
|
|
||||||
const struct xen_pcibk_backend *__read_mostly xen_pcibk_backend;
|
const struct xen_pcibk_backend *__read_mostly xen_pcibk_backend;
|
||||||
|
|
||||||
|
@ -2056,11 +2056,12 @@ static const struct xenbus_device_id scsiback_ids[] = {
|
|||||||
{ "" }
|
{ "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_XENBUS_DRIVER(scsiback, ,
|
static struct xenbus_driver scsiback_driver = {
|
||||||
|
.ids = scsiback_ids,
|
||||||
.probe = scsiback_probe,
|
.probe = scsiback_probe,
|
||||||
.remove = scsiback_remove,
|
.remove = scsiback_remove,
|
||||||
.otherend_changed = scsiback_frontend_changed
|
.otherend_changed = scsiback_frontend_changed
|
||||||
);
|
};
|
||||||
|
|
||||||
static void scsiback_init_pend(void *p)
|
static void scsiback_init_pend(void *p)
|
||||||
{
|
{
|
||||||
|
@ -297,9 +297,13 @@ void xenbus_dev_shutdown(struct device *_dev)
|
|||||||
EXPORT_SYMBOL_GPL(xenbus_dev_shutdown);
|
EXPORT_SYMBOL_GPL(xenbus_dev_shutdown);
|
||||||
|
|
||||||
int xenbus_register_driver_common(struct xenbus_driver *drv,
|
int xenbus_register_driver_common(struct xenbus_driver *drv,
|
||||||
struct xen_bus_type *bus)
|
struct xen_bus_type *bus,
|
||||||
|
struct module *owner, const char *mod_name)
|
||||||
{
|
{
|
||||||
|
drv->driver.name = drv->name ? drv->name : drv->ids[0].devicetype;
|
||||||
drv->driver.bus = &bus->bus;
|
drv->driver.bus = &bus->bus;
|
||||||
|
drv->driver.owner = owner;
|
||||||
|
drv->driver.mod_name = mod_name;
|
||||||
|
|
||||||
return driver_register(&drv->driver);
|
return driver_register(&drv->driver);
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,9 @@ extern int xenbus_match(struct device *_dev, struct device_driver *_drv);
|
|||||||
extern int xenbus_dev_probe(struct device *_dev);
|
extern int xenbus_dev_probe(struct device *_dev);
|
||||||
extern int xenbus_dev_remove(struct device *_dev);
|
extern int xenbus_dev_remove(struct device *_dev);
|
||||||
extern int xenbus_register_driver_common(struct xenbus_driver *drv,
|
extern int xenbus_register_driver_common(struct xenbus_driver *drv,
|
||||||
struct xen_bus_type *bus);
|
struct xen_bus_type *bus,
|
||||||
|
struct module *owner,
|
||||||
|
const char *mod_name);
|
||||||
extern int xenbus_probe_node(struct xen_bus_type *bus,
|
extern int xenbus_probe_node(struct xen_bus_type *bus,
|
||||||
const char *type,
|
const char *type,
|
||||||
const char *nodename);
|
const char *nodename);
|
||||||
|
@ -234,13 +234,15 @@ int xenbus_dev_is_online(struct xenbus_device *dev)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(xenbus_dev_is_online);
|
EXPORT_SYMBOL_GPL(xenbus_dev_is_online);
|
||||||
|
|
||||||
int xenbus_register_backend(struct xenbus_driver *drv)
|
int __xenbus_register_backend(struct xenbus_driver *drv, struct module *owner,
|
||||||
|
const char *mod_name)
|
||||||
{
|
{
|
||||||
drv->read_otherend_details = read_frontend_details;
|
drv->read_otherend_details = read_frontend_details;
|
||||||
|
|
||||||
return xenbus_register_driver_common(drv, &xenbus_backend);
|
return xenbus_register_driver_common(drv, &xenbus_backend,
|
||||||
|
owner, mod_name);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(xenbus_register_backend);
|
EXPORT_SYMBOL_GPL(__xenbus_register_backend);
|
||||||
|
|
||||||
static int backend_probe_and_watch(struct notifier_block *notifier,
|
static int backend_probe_and_watch(struct notifier_block *notifier,
|
||||||
unsigned long event,
|
unsigned long event,
|
||||||
|
@ -317,13 +317,15 @@ static void wait_for_devices(struct xenbus_driver *xendrv)
|
|||||||
print_device_status);
|
print_device_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
int xenbus_register_frontend(struct xenbus_driver *drv)
|
int __xenbus_register_frontend(struct xenbus_driver *drv, struct module *owner,
|
||||||
|
const char *mod_name)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
drv->read_otherend_details = read_backend_details;
|
drv->read_otherend_details = read_backend_details;
|
||||||
|
|
||||||
ret = xenbus_register_driver_common(drv, &xenbus_frontend);
|
ret = xenbus_register_driver_common(drv, &xenbus_frontend,
|
||||||
|
owner, mod_name);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -332,7 +334,7 @@ int xenbus_register_frontend(struct xenbus_driver *drv)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(xenbus_register_frontend);
|
EXPORT_SYMBOL_GPL(__xenbus_register_frontend);
|
||||||
|
|
||||||
static DECLARE_WAIT_QUEUE_HEAD(backend_state_wq);
|
static DECLARE_WAIT_QUEUE_HEAD(backend_state_wq);
|
||||||
static int backend_state;
|
static int backend_state;
|
||||||
|
@ -86,6 +86,7 @@ struct xenbus_device_id
|
|||||||
|
|
||||||
/* A xenbus driver. */
|
/* A xenbus driver. */
|
||||||
struct xenbus_driver {
|
struct xenbus_driver {
|
||||||
|
const char *name; /* defaults to ids[0].devicetype */
|
||||||
const struct xenbus_device_id *ids;
|
const struct xenbus_device_id *ids;
|
||||||
int (*probe)(struct xenbus_device *dev,
|
int (*probe)(struct xenbus_device *dev,
|
||||||
const struct xenbus_device_id *id);
|
const struct xenbus_device_id *id);
|
||||||
@ -100,20 +101,22 @@ struct xenbus_driver {
|
|||||||
int (*is_ready)(struct xenbus_device *dev);
|
int (*is_ready)(struct xenbus_device *dev);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEFINE_XENBUS_DRIVER(var, drvname, methods...) \
|
|
||||||
struct xenbus_driver var ## _driver = { \
|
|
||||||
.driver.name = drvname + 0 ?: var ## _ids->devicetype, \
|
|
||||||
.driver.owner = THIS_MODULE, \
|
|
||||||
.ids = var ## _ids, ## methods \
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline struct xenbus_driver *to_xenbus_driver(struct device_driver *drv)
|
static inline struct xenbus_driver *to_xenbus_driver(struct device_driver *drv)
|
||||||
{
|
{
|
||||||
return container_of(drv, struct xenbus_driver, driver);
|
return container_of(drv, struct xenbus_driver, driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __must_check xenbus_register_frontend(struct xenbus_driver *);
|
int __must_check __xenbus_register_frontend(struct xenbus_driver *drv,
|
||||||
int __must_check xenbus_register_backend(struct xenbus_driver *);
|
struct module *owner,
|
||||||
|
const char *mod_name);
|
||||||
|
int __must_check __xenbus_register_backend(struct xenbus_driver *drv,
|
||||||
|
struct module *owner,
|
||||||
|
const char *mod_name);
|
||||||
|
|
||||||
|
#define xenbus_register_frontend(drv) \
|
||||||
|
__xenbus_register_frontend(drv, THIS_MODULE, KBUILD_MODNAME);
|
||||||
|
#define xenbus_register_backend(drv) \
|
||||||
|
__xenbus_register_backend(drv, THIS_MODULE, KBUILD_MODNAME);
|
||||||
|
|
||||||
void xenbus_unregister_driver(struct xenbus_driver *drv);
|
void xenbus_unregister_driver(struct xenbus_driver *drv);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user