driver core: make device_{add|remove}_groups() public
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 20 Jul 2017 00:24:31 +0000 (17:24 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 22 Jul 2017 09:59:23 +0000 (11:59 +0200)
Many drivers create additional driver-specific device attributes when
binding to the device. To avoid them calling SYSFS API directly, let's
export these helpers.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/base.h
drivers/base/core.c
include/linux/device.h

index e19b1008e5fb08b1099e5f5d8f0dc86dfc24bde5..539432a14b5c60ede9da6acca14e50a08d927ef2 100644 (file)
@@ -126,11 +126,6 @@ extern int driver_add_groups(struct device_driver *drv,
 extern void driver_remove_groups(struct device_driver *drv,
                                 const struct attribute_group **groups);
 
-extern int device_add_groups(struct device *dev,
-                            const struct attribute_group **groups);
-extern void device_remove_groups(struct device *dev,
-                                const struct attribute_group **groups);
-
 extern char *make_class_name(const char *name, struct kobject *kobj);
 
 extern int devres_release_all(struct device *dev);
index bbecaf9293bed4d61238f703a213ab8b60541c7f..14f8cf5c8b058b6d8447532ae7986a85516d92e8 100644 (file)
@@ -1026,12 +1026,14 @@ int device_add_groups(struct device *dev, const struct attribute_group **groups)
 {
        return sysfs_create_groups(&dev->kobj, groups);
 }
+EXPORT_SYMBOL_GPL(device_add_groups);
 
 void device_remove_groups(struct device *dev,
                          const struct attribute_group **groups)
 {
        sysfs_remove_groups(&dev->kobj, groups);
 }
+EXPORT_SYMBOL_GPL(device_remove_groups);
 
 static int device_add_attrs(struct device *dev)
 {
index 9ef518af5515a01e202dee3cf4c27ffcd8c56441..10cf209a4e8219936e5ca93cdd1b099b332ef1b5 100644 (file)
@@ -1200,6 +1200,11 @@ struct device *device_create_with_groups(struct class *cls,
                             const char *fmt, ...);
 extern void device_destroy(struct class *cls, dev_t devt);
 
+extern int __must_check device_add_groups(struct device *dev,
+                                       const struct attribute_group **groups);
+extern void device_remove_groups(struct device *dev,
+                                const struct attribute_group **groups);
+
 /*
  * Platform "fixup" functions - allow the platform to have their say
  * about devices and actions that the general device layer doesn't