mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-26 08:31:13 +00:00
[SCSI] correct transport class abstraction to work outside SCSI
I recently tried to construct a totally generic transport class and found there were certain features missing from the current abstract transport class. Most notable is that you have to hang the data on the class_device but most of the API is framed in terms of the generic device, not the class_device. These changes are two fold - Provide the class_device to all of the setup and configure APIs - Provide and extra API to take the device and the attribute class and return the corresponding class_device Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
10c1b88987
commit
d0a7e57400
6 changed files with 72 additions and 20 deletions
|
@ -11,10 +11,12 @@
|
|||
|
||||
#include <linux/device.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
struct attribute_container {
|
||||
struct list_head node;
|
||||
struct list_head containers;
|
||||
spinlock_t containers_lock;
|
||||
struct class *class;
|
||||
struct class_device_attribute **attrs;
|
||||
int (*match)(struct attribute_container *, struct device *);
|
||||
|
@ -62,12 +64,7 @@ int attribute_container_add_class_device_adapter(struct attribute_container *con
|
|||
struct class_device *classdev);
|
||||
void attribute_container_remove_attrs(struct class_device *classdev);
|
||||
void attribute_container_class_device_del(struct class_device *classdev);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
struct class_device *attribute_container_find_class_device(struct attribute_container *, struct device *);
|
||||
struct class_device_attribute **attribute_container_classdev_to_attrs(const struct class_device *classdev);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue