diff options
author | Kay Sievers <kay.sievers@novell.com> | 2006-10-07 15:54:55 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-07 13:37:14 -0500 |
commit | f9f852df2faf76a2667949ddb4947d4b8f99f02f (patch) | |
tree | 3dfdbae06ef17c83266cc18ed77fcd1c51328c15 /include/linux | |
parent | 239378f16aa1ab5c502e42a06359d2de4f88ebb4 (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.h | 8 |
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))); |
329 | extern void class_device_destroy(struct class *cls, dev_t devt); | 329 | extern void class_device_destroy(struct class *cls, dev_t devt); |
330 | 330 | ||
331 | struct 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 */ |
332 | struct device_attribute { | 339 | struct 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; |