|
@@ -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);
|
|
|
|