diff options
| -rw-r--r-- | drivers/block/xen-blkback/xenbus.c | 9 | ||||
| -rw-r--r-- | drivers/block/xen-blkfront.c | 11 | ||||
| -rw-r--r-- | drivers/input/misc/xen-kbdfront.c | 7 | ||||
| -rw-r--r-- | drivers/net/xen-netback/xenbus.c | 9 | ||||
| -rw-r--r-- | drivers/net/xen-netfront.c | 9 | ||||
| -rw-r--r-- | drivers/pci/xen-pcifront.c | 11 | ||||
| -rw-r--r-- | drivers/video/xen-fbfront.c | 9 | ||||
| -rw-r--r-- | drivers/xen/xen-pciback/xenbus.c | 13 | ||||
| -rw-r--r-- | drivers/xen/xenbus/xenbus_probe.c | 7 | ||||
| -rw-r--r-- | drivers/xen/xenbus/xenbus_probe.h | 4 | ||||
| -rw-r--r-- | drivers/xen/xenbus/xenbus_probe_backend.c | 8 | ||||
| -rw-r--r-- | drivers/xen/xenbus/xenbus_probe_frontend.c | 8 | ||||
| -rw-r--r-- | include/xen/xenbus.h | 31 | 
13 files changed, 44 insertions, 92 deletions
diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index f759ad4584c..edbb69ebdf2 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -787,17 +787,14 @@ static const struct xenbus_device_id xen_blkbk_ids[] = {  }; -static struct xenbus_driver xen_blkbk = { -	.name = "vbd", -	.owner = THIS_MODULE, -	.ids = xen_blkbk_ids, +static DEFINE_XENBUS_DRIVER(xen_blkbk, ,  	.probe = xen_blkbk_probe,  	.remove = xen_blkbk_remove,  	.otherend_changed = frontend_changed -}; +);  int xen_blkif_xenbus_init(void)  { -	return xenbus_register_backend(&xen_blkbk); +	return xenbus_register_backend(&xen_blkbk_driver);  } diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c index 7b2ec590841..9fd3ee203b1 100644 --- a/drivers/block/xen-blkfront.c +++ b/drivers/block/xen-blkfront.c @@ -1437,16 +1437,13 @@ static const struct xenbus_device_id blkfront_ids[] = {  	{ "" }  }; -static struct xenbus_driver blkfront = { -	.name = "vbd", -	.owner = THIS_MODULE, -	.ids = blkfront_ids, +static DEFINE_XENBUS_DRIVER(blkfront, ,  	.probe = blkfront_probe,  	.remove = blkfront_remove,  	.resume = blkfront_resume,  	.otherend_changed = blkback_changed,  	.is_ready = blkfront_is_ready, -}; +);  static int __init xlblk_init(void)  { @@ -1461,7 +1458,7 @@ static int __init xlblk_init(void)  		return -ENODEV;  	} -	ret = xenbus_register_frontend(&blkfront); +	ret = xenbus_register_frontend(&blkfront_driver);  	if (ret) {  		unregister_blkdev(XENVBD_MAJOR, DEV_NAME);  		return ret; @@ -1474,7 +1471,7 @@ module_init(xlblk_init);  static void __exit xlblk_exit(void)  { -	return xenbus_unregister_driver(&blkfront); +	return xenbus_unregister_driver(&blkfront_driver);  }  module_exit(xlblk_exit); diff --git a/drivers/input/misc/xen-kbdfront.c b/drivers/input/misc/xen-kbdfront.c index ad2e51c04db..02ca8680ea5 100644 --- a/drivers/input/misc/xen-kbdfront.c +++ b/drivers/input/misc/xen-kbdfront.c @@ -361,15 +361,12 @@ static const struct xenbus_device_id xenkbd_ids[] = {  	{ "" }  }; -static struct xenbus_driver xenkbd_driver = { -	.name = "vkbd", -	.owner = THIS_MODULE, -	.ids = xenkbd_ids, +static DEFINE_XENBUS_DRIVER(xenkbd, ,  	.probe = xenkbd_probe,  	.remove = xenkbd_remove,  	.resume = xenkbd_resume,  	.otherend_changed = xenkbd_backend_changed, -}; +);  static int __init xenkbd_init(void)  { diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c index 1ce729d6af7..410018c4c52 100644 --- a/drivers/net/xen-netback/xenbus.c +++ b/drivers/net/xen-netback/xenbus.c @@ -474,17 +474,14 @@ static const struct xenbus_device_id netback_ids[] = {  }; -static struct xenbus_driver netback = { -	.name = "vif", -	.owner = THIS_MODULE, -	.ids = netback_ids, +static DEFINE_XENBUS_DRIVER(netback, ,  	.probe = netback_probe,  	.remove = netback_remove,  	.uevent = netback_uevent,  	.otherend_changed = frontend_changed, -}; +);  int xenvif_xenbus_init(void)  { -	return xenbus_register_backend(&netback); +	return xenbus_register_backend(&netback_driver);  } diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 226faab2360..81ff5a74927 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -1910,7 +1910,7 @@ static void xennet_sysfs_delif(struct net_device *netdev)  #endif /* CONFIG_SYSFS */ -static struct xenbus_device_id netfront_ids[] = { +static const struct xenbus_device_id netfront_ids[] = {  	{ "vif" },  	{ "" }  }; @@ -1937,15 +1937,12 @@ static int __devexit xennet_remove(struct xenbus_device *dev)  	return 0;  } -static struct xenbus_driver netfront_driver = { -	.name = "vif", -	.owner = THIS_MODULE, -	.ids = netfront_ids, +static DEFINE_XENBUS_DRIVER(netfront, ,  	.probe = netfront_probe,  	.remove = __devexit_p(xennet_remove),  	.resume = netfront_resume,  	.otherend_changed = netback_changed, -}; +);  static int __init netif_init(void)  { diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c index 90832a95599..7cf3d2fcf56 100644 --- a/drivers/pci/xen-pcifront.c +++ b/drivers/pci/xen-pcifront.c @@ -1126,14 +1126,11 @@ static const struct xenbus_device_id xenpci_ids[] = {  	{""},  }; -static struct xenbus_driver xenbus_pcifront_driver = { -	.name			= "pcifront", -	.owner			= THIS_MODULE, -	.ids			= xenpci_ids, +static DEFINE_XENBUS_DRIVER(xenpci, "pcifront",  	.probe			= pcifront_xenbus_probe,  	.remove			= pcifront_xenbus_remove,  	.otherend_changed	= pcifront_backend_changed, -}; +);  static int __init pcifront_init(void)  { @@ -1142,12 +1139,12 @@ static int __init pcifront_init(void)  	pci_frontend_registrar(1 /* enable */); -	return xenbus_register_frontend(&xenbus_pcifront_driver); +	return xenbus_register_frontend(&xenpci_driver);  }  static void __exit pcifront_cleanup(void)  { -	xenbus_unregister_driver(&xenbus_pcifront_driver); +	xenbus_unregister_driver(&xenpci_driver);  	pci_frontend_registrar(0 /* disable */);  }  module_init(pcifront_init); diff --git a/drivers/video/xen-fbfront.c b/drivers/video/xen-fbfront.c index beac52fc1c0..cb4529c40d7 100644 --- a/drivers/video/xen-fbfront.c +++ b/drivers/video/xen-fbfront.c @@ -671,20 +671,17 @@ InitWait:  	}  } -static struct xenbus_device_id xenfb_ids[] = { +static const struct xenbus_device_id xenfb_ids[] = {  	{ "vfb" },  	{ "" }  }; -static struct xenbus_driver xenfb_driver = { -	.name = "vfb", -	.owner = THIS_MODULE, -	.ids = xenfb_ids, +static DEFINE_XENBUS_DRIVER(xenfb, ,  	.probe = xenfb_probe,  	.remove = xenfb_remove,  	.resume = xenfb_resume,  	.otherend_changed = xenfb_backend_changed, -}; +);  static int __init xenfb_init(void)  { diff --git a/drivers/xen/xen-pciback/xenbus.c b/drivers/xen/xen-pciback/xenbus.c index 075525945e3..c80f9c84d08 100644 --- a/drivers/xen/xen-pciback/xenbus.c +++ b/drivers/xen/xen-pciback/xenbus.c @@ -707,19 +707,16 @@ static int xen_pcibk_xenbus_remove(struct xenbus_device *dev)  	return 0;  } -static const struct xenbus_device_id xenpci_ids[] = { +static const struct xenbus_device_id xen_pcibk_ids[] = {  	{"pci"},  	{""},  }; -static struct xenbus_driver xenbus_xen_pcibk_driver = { -	.name			= DRV_NAME, -	.owner			= THIS_MODULE, -	.ids			= xenpci_ids, +static DEFINE_XENBUS_DRIVER(xen_pcibk, DRV_NAME,  	.probe			= xen_pcibk_xenbus_probe,  	.remove			= xen_pcibk_xenbus_remove,  	.otherend_changed	= xen_pcibk_frontend_changed, -}; +);  const struct xen_pcibk_backend *__read_mostly xen_pcibk_backend; @@ -735,11 +732,11 @@ int __init xen_pcibk_xenbus_register(void)  	if (passthrough)  		xen_pcibk_backend = &xen_pcibk_passthrough_backend;  	pr_info(DRV_NAME ": backend is %s\n", xen_pcibk_backend->name); -	return xenbus_register_backend(&xenbus_xen_pcibk_driver); +	return xenbus_register_backend(&xen_pcibk_driver);  }  void __exit xen_pcibk_xenbus_unregister(void)  {  	destroy_workqueue(xen_pcibk_wq); -	xenbus_unregister_driver(&xenbus_xen_pcibk_driver); +	xenbus_unregister_driver(&xen_pcibk_driver);  } diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c index 1c05b2508ae..3864967202b 100644 --- a/drivers/xen/xenbus/xenbus_probe.c +++ b/drivers/xen/xenbus/xenbus_probe.c @@ -291,14 +291,9 @@ void xenbus_dev_shutdown(struct device *_dev)  EXPORT_SYMBOL_GPL(xenbus_dev_shutdown);  int xenbus_register_driver_common(struct xenbus_driver *drv, -				  struct xen_bus_type *bus, -				  struct module *owner, -				  const char *mod_name) +				  struct xen_bus_type *bus)  { -	drv->driver.name = drv->name;  	drv->driver.bus = &bus->bus; -	drv->driver.owner = owner; -	drv->driver.mod_name = mod_name;  	return driver_register(&drv->driver);  } diff --git a/drivers/xen/xenbus/xenbus_probe.h b/drivers/xen/xenbus/xenbus_probe.h index 460d784a769..bb4f92ed873 100644 --- a/drivers/xen/xenbus/xenbus_probe.h +++ b/drivers/xen/xenbus/xenbus_probe.h @@ -53,9 +53,7 @@ extern int xenbus_match(struct device *_dev, struct device_driver *_drv);  extern int xenbus_dev_probe(struct device *_dev);  extern int xenbus_dev_remove(struct device *_dev);  extern int xenbus_register_driver_common(struct xenbus_driver *drv, -					 struct xen_bus_type *bus, -					 struct module *owner, -					 const char *mod_name); +					 struct xen_bus_type *bus);  extern int xenbus_probe_node(struct xen_bus_type *bus,  			     const char *type,  			     const char *nodename); diff --git a/drivers/xen/xenbus/xenbus_probe_backend.c b/drivers/xen/xenbus/xenbus_probe_backend.c index c3c7cd195c1..257be37d909 100644 --- a/drivers/xen/xenbus/xenbus_probe_backend.c +++ b/drivers/xen/xenbus/xenbus_probe_backend.c @@ -232,15 +232,13 @@ int xenbus_dev_is_online(struct xenbus_device *dev)  }  EXPORT_SYMBOL_GPL(xenbus_dev_is_online); -int __xenbus_register_backend(struct xenbus_driver *drv, -			      struct module *owner, const char *mod_name) +int xenbus_register_backend(struct xenbus_driver *drv)  {  	drv->read_otherend_details = read_frontend_details; -	return xenbus_register_driver_common(drv, &xenbus_backend, -					     owner, mod_name); +	return xenbus_register_driver_common(drv, &xenbus_backend);  } -EXPORT_SYMBOL_GPL(__xenbus_register_backend); +EXPORT_SYMBOL_GPL(xenbus_register_backend);  static int backend_probe_and_watch(struct notifier_block *notifier,  				   unsigned long event, diff --git a/drivers/xen/xenbus/xenbus_probe_frontend.c b/drivers/xen/xenbus/xenbus_probe_frontend.c index 2f73195512b..9c57819df51 100644 --- a/drivers/xen/xenbus/xenbus_probe_frontend.c +++ b/drivers/xen/xenbus/xenbus_probe_frontend.c @@ -230,15 +230,13 @@ static void wait_for_devices(struct xenbus_driver *xendrv)  			 print_device_status);  } -int __xenbus_register_frontend(struct xenbus_driver *drv, -			       struct module *owner, const char *mod_name) +int xenbus_register_frontend(struct xenbus_driver *drv)  {  	int ret;  	drv->read_otherend_details = read_backend_details; -	ret = xenbus_register_driver_common(drv, &xenbus_frontend, -					    owner, mod_name); +	ret = xenbus_register_driver_common(drv, &xenbus_frontend);  	if (ret)  		return ret; @@ -247,7 +245,7 @@ int __xenbus_register_frontend(struct xenbus_driver *drv,  	return 0;  } -EXPORT_SYMBOL_GPL(__xenbus_register_frontend); +EXPORT_SYMBOL_GPL(xenbus_register_frontend);  static DECLARE_WAIT_QUEUE_HEAD(backend_state_wq);  static int backend_state; diff --git a/include/xen/xenbus.h b/include/xen/xenbus.h index b1b6676c1c4..e8c599b237c 100644 --- a/include/xen/xenbus.h +++ b/include/xen/xenbus.h @@ -85,8 +85,6 @@ struct xenbus_device_id  /* A xenbus driver. */  struct xenbus_driver { -	char *name; -	struct module *owner;  	const struct xenbus_device_id *ids;  	int (*probe)(struct xenbus_device *dev,  		     const struct xenbus_device_id *id); @@ -101,31 +99,20 @@ struct xenbus_driver {  	int (*is_ready)(struct xenbus_device *dev);  }; -static inline struct xenbus_driver *to_xenbus_driver(struct device_driver *drv) -{ -	return container_of(drv, struct xenbus_driver, driver); +#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				\  } -int __must_check __xenbus_register_frontend(struct xenbus_driver *drv, -					    struct module *owner, -					    const char *mod_name); - -static inline int __must_check -xenbus_register_frontend(struct xenbus_driver *drv) +static inline struct xenbus_driver *to_xenbus_driver(struct device_driver *drv)  { -	WARN_ON(drv->owner != THIS_MODULE); -	return __xenbus_register_frontend(drv, THIS_MODULE, KBUILD_MODNAME); +	return container_of(drv, struct xenbus_driver, driver);  } -int __must_check __xenbus_register_backend(struct xenbus_driver *drv, -					   struct module *owner, -					   const char *mod_name); -static inline int __must_check -xenbus_register_backend(struct xenbus_driver *drv) -{ -	WARN_ON(drv->owner != THIS_MODULE); -	return __xenbus_register_backend(drv, THIS_MODULE, KBUILD_MODNAME); -} +int __must_check xenbus_register_frontend(struct xenbus_driver *); +int __must_check xenbus_register_backend(struct xenbus_driver *);  void xenbus_unregister_driver(struct xenbus_driver *drv);  |