libnvdimm: provide module_nd_driver wrapper
authorJohannes Thumshirn <jthumshirn@suse.de>
Wed, 14 Mar 2018 18:25:06 +0000 (19:25 +0100)
committerDan Williams <dan.j.williams@intel.com>
Thu, 15 Mar 2018 14:17:21 +0000 (07:17 -0700)
Provide a module_nd_driver() wrapper over simple nd_driver_register()
nd_driver_unregister() combinations in module_init() and module_exit()
respectively.

Note an explicit nd_driver_unregister() had to be implemented as nd
bus drivers did call device_unregister() direcly in the module_exit()
function.

Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
include/linux/nd.h

index 5dc6b695437da044352fc6606f0a4ccaee29d6db..43c181a6add582df82fad2a0161e93b05883392e 100644 (file)
@@ -180,6 +180,12 @@ struct nd_region;
 void nvdimm_region_notify(struct nd_region *nd_region, enum nvdimm_event event);
 int __must_check __nd_driver_register(struct nd_device_driver *nd_drv,
                struct module *module, const char *mod_name);
+static inline void nd_driver_unregister(struct nd_device_driver *drv)
+{
+       driver_unregister(&drv->drv);
+}
 #define nd_driver_register(driver) \
        __nd_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
+#define module_nd_driver(driver) \
+       module_driver(driver, nd_driver_register, nd_driver_unregister)
 #endif /* __LINUX_ND_H__ */