Blame view
include/linux/transport_class.h
2.48 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* * transport_class.h - a generic container for all transport classes * * Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com> * * This file is licensed under GPLv2 */ #ifndef _TRANSPORT_CLASS_H_ #define _TRANSPORT_CLASS_H_ #include <linux/device.h> #include <linux/attribute_container.h> |
d0a7e5740 [SCSI] correct tr... |
14 |
struct transport_container; |
1da177e4c Linux-2.6.12-rc2 |
15 16 |
struct transport_class { struct class class; |
d0a7e5740 [SCSI] correct tr... |
17 |
int (*setup)(struct transport_container *, struct device *, |
ee959b00c SCSI: convert str... |
18 |
struct device *); |
d0a7e5740 [SCSI] correct tr... |
19 |
int (*configure)(struct transport_container *, struct device *, |
ee959b00c SCSI: convert str... |
20 |
struct device *); |
d0a7e5740 [SCSI] correct tr... |
21 |
int (*remove)(struct transport_container *, struct device *, |
ee959b00c SCSI: convert str... |
22 |
struct device *); |
1da177e4c Linux-2.6.12-rc2 |
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
}; #define DECLARE_TRANSPORT_CLASS(cls, nm, su, rm, cfg) \ struct transport_class cls = { \ .class = { \ .name = nm, \ }, \ .setup = su, \ .remove = rm, \ .configure = cfg, \ } struct anon_transport_class { struct transport_class tclass; struct attribute_container container; }; #define DECLARE_ANON_TRANSPORT_CLASS(cls, mtch, cfg) \ struct anon_transport_class cls = { \ .tclass = { \ .configure = cfg, \ }, \ . container = { \ .match = mtch, \ }, \ } #define class_to_transport_class(x) \ container_of(x, struct transport_class, class) struct transport_container { struct attribute_container ac; |
a4dbd6740 driver model: con... |
56 |
const struct attribute_group *statistics; |
1da177e4c Linux-2.6.12-rc2 |
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
}; #define attribute_container_to_transport_container(x) \ container_of(x, struct transport_container, ac) void transport_remove_device(struct device *); void transport_add_device(struct device *); void transport_setup_device(struct device *); void transport_configure_device(struct device *); void transport_destroy_device(struct device *); static inline void transport_register_device(struct device *dev) { transport_setup_device(dev); transport_add_device(dev); } static inline void transport_unregister_device(struct device *dev) { transport_remove_device(dev); transport_destroy_device(dev); } static inline int transport_container_register(struct transport_container *tc) { return attribute_container_register(&tc->ac); } |
2f3edc693 [SCSI] transport_... |
86 |
static inline void transport_container_unregister(struct transport_container *tc) |
1da177e4c Linux-2.6.12-rc2 |
87 |
{ |
2f3edc693 [SCSI] transport_... |
88 89 |
if (unlikely(attribute_container_unregister(&tc->ac))) BUG(); |
1da177e4c Linux-2.6.12-rc2 |
90 91 92 93 94 95 96 97 98 |
} int transport_class_register(struct transport_class *); int anon_transport_class_register(struct anon_transport_class *); void transport_class_unregister(struct transport_class *); void anon_transport_class_unregister(struct anon_transport_class *); #endif |