Re: [PATCH] USB and Driver Core patches for 2.6.10

Greg KH
2005-01-08T08:06:49Z

ChangeSet 1.1938.444.28, 2004/12/21 16:51:39-08:00, jbarnes@engr.sgi.com

[PATCH] driver core: allow struct bin_attributes in class devices

This small patch adds routines to create and remove bin_attribute files
for class devices. One intended use is for binary files corresponding to
PCI busses, like bus legacy I/O ports or ISA memory.

Signed-off-by: Jesse Barnes <jbarnes@sgi.com>

drivers/base/class.c | 18 ++++++++++++++++++
include/linux/device.h | 5 ++++-
2 files changed, 22 insertions(+), 1 deletion(-)

diff -Nru a/drivers/base/class.c b/drivers/base/class.c
--- a/drivers/base/class.c 2005-01-07 15:40:31 -08:00
+++ b/drivers/base/class.c 2005-01-07 15:40:31 -08:00
@@ -179,6 +179,22 @@
sysfs_remove_file(&class_dev->kobj, &attr->attr);
}

+int class_device_create_bin_file(struct class_device *class_dev,
+ struct bin_attribute *attr)
+{
+ int error = -EINVAL;
+ if (class_dev)
+ error = sysfs_create_bin_file(&class_dev->kobj, attr);
+ return error;
+}
+
+void class_device_remove_bin_file(struct class_device *class_dev,
+ struct bin_attribute *attr)
+{
+ if (class_dev)
+ sysfs_remove_bin_file(&class_dev->kobj, attr);
+}
+
static int class_device_dev_link(struct class_device * class_dev)
{
if (class_dev->dev)
@@ -576,6 +592,8 @@
EXPORT_SYMBOL_GPL(class_device_put);
EXPORT_SYMBOL_GPL(class_device_create_file);
EXPORT_SYMBOL_GPL(class_device_remove_file);
+EXPORT_SYMBOL_GPL(class_device_create_bin_file);
+EXPORT_SYMBOL_GPL(class_device_remove_bin_file);

EXPORT_SYMBOL_GPL(class_interface_register);
EXPORT_SYMBOL_GPL(class_interface_unregister);
diff -Nru a/include/linux/device.h b/include/linux/device.h
--- a/include/linux/device.h 2005-01-07 15:40:31 -08:00
+++ b/include/linux/device.h 2005-01-07 15:40:31 -08:00
@@ -228,7 +228,10 @@
const struct class_device_attribute *);
extern void class_device_remove_file(struct class_device *,
const struct class_device_attribute *);
-
+extern int class_device_create_bin_file(struct class_device *,
+ struct bin_attribute *);
+extern void class_device_remove_bin_file(struct class_device *,
+ struct bin_attribute *);

struct class_interface {
struct list_head node;