aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@novell.com>2006-10-07 15:54:55 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-02-07 13:37:14 -0500
commitf9f852df2faf76a2667949ddb4947d4b8f99f02f (patch)
tree3dfdbae06ef17c83266cc18ed77fcd1c51328c15 /include/linux
parent239378f16aa1ab5c502e42a06359d2de4f88ebb4 (diff)
Driver core: add device_type to struct device
This allows us to add type specific attributes, uevent vars and release funtions. A subsystem can carry different types of devices like the "block" subsys has disks and partitions. Both types create a different set of attributes, but belong to the same subsystem. This corresponds to the low level objects: kobject -> device (object/device data) kobj_type -> device_type (type of object/device we are embedded in) kset -> class/bus (list of objects/devices of a subsystem) Signed-off-by: Kay Sievers <kay.sievers@novell.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/device.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/device.h b/include/linux/device.h
index da7221913114..e1e164f81eea 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -328,6 +328,13 @@ extern struct class_device *class_device_create(struct class *cls,
328 __attribute__((format(printf,5,6))); 328 __attribute__((format(printf,5,6)));
329extern void class_device_destroy(struct class *cls, dev_t devt); 329extern void class_device_destroy(struct class *cls, dev_t devt);
330 330
331struct device_type {
332 struct device_attribute *attrs;
333 int (*uevent)(struct device *dev, char **envp, int num_envp,
334 char *buffer, int buffer_size);
335 void (*release)(struct device *dev);
336};
337
331/* interface for exporting device attributes */ 338/* interface for exporting device attributes */
332struct device_attribute { 339struct device_attribute {
333 struct attribute attr; 340 struct attribute attr;
@@ -356,6 +363,7 @@ struct device {
356 363
357 struct kobject kobj; 364 struct kobject kobj;
358 char bus_id[BUS_ID_SIZE]; /* position on parent bus */ 365 char bus_id[BUS_ID_SIZE]; /* position on parent bus */
366 struct device_type *type;
359 unsigned is_registered:1; 367 unsigned is_registered:1;
360 struct device_attribute uevent_attr; 368 struct device_attribute uevent_attr;
361 struct device_attribute *devt_attr; 369 struct device_attribute *devt_attr;