Root/
1 | #include <linux/notifier.h> |
2 | |
3 | /** |
4 | * struct subsys_private - structure to hold the private to the driver core portions of the bus_type/class structure. |
5 | * |
6 | * @subsys - the struct kset that defines this subsystem |
7 | * @devices_kset - the subsystem's 'devices' directory |
8 | * @interfaces - list of subsystem interfaces associated |
9 | * @mutex - protect the devices, and interfaces lists. |
10 | * |
11 | * @drivers_kset - the list of drivers associated |
12 | * @klist_devices - the klist to iterate over the @devices_kset |
13 | * @klist_drivers - the klist to iterate over the @drivers_kset |
14 | * @bus_notifier - the bus notifier list for anything that cares about things |
15 | * on this bus. |
16 | * @bus - pointer back to the struct bus_type that this structure is associated |
17 | * with. |
18 | * |
19 | * @glue_dirs - "glue" directory to put in-between the parent device to |
20 | * avoid namespace conflicts |
21 | * @class - pointer back to the struct class that this structure is associated |
22 | * with. |
23 | * |
24 | * This structure is the one that is the actual kobject allowing struct |
25 | * bus_type/class to be statically allocated safely. Nothing outside of the |
26 | * driver core should ever touch these fields. |
27 | */ |
28 | struct subsys_private { |
29 | struct kset subsys; |
30 | struct kset *devices_kset; |
31 | struct list_head interfaces; |
32 | struct mutex mutex; |
33 | |
34 | struct kset *drivers_kset; |
35 | struct klist klist_devices; |
36 | struct klist klist_drivers; |
37 | struct blocking_notifier_head bus_notifier; |
38 | unsigned int drivers_autoprobe:1; |
39 | struct bus_type *bus; |
40 | |
41 | struct kset glue_dirs; |
42 | struct class *class; |
43 | }; |
44 | #define to_subsys_private(obj) container_of(obj, struct subsys_private, subsys.kobj) |
45 | |
46 | struct driver_private { |
47 | struct kobject kobj; |
48 | struct klist klist_devices; |
49 | struct klist_node knode_bus; |
50 | struct module_kobject *mkobj; |
51 | struct device_driver *driver; |
52 | }; |
53 | #define to_driver(obj) container_of(obj, struct driver_private, kobj) |
54 | |
55 | /** |
56 | * struct device_private - structure to hold the private to the driver core portions of the device structure. |
57 | * |
58 | * @klist_children - klist containing all children of this device |
59 | * @knode_parent - node in sibling list |
60 | * @knode_driver - node in driver list |
61 | * @knode_bus - node in bus list |
62 | * @deferred_probe - entry in deferred_probe_list which is used to retry the |
63 | * binding of drivers which were unable to get all the resources needed by |
64 | * the device; typically because it depends on another driver getting |
65 | * probed first. |
66 | * @driver_data - private pointer for driver specific info. Will turn into a |
67 | * list soon. |
68 | * @device - pointer back to the struct class that this structure is |
69 | * associated with. |
70 | * |
71 | * Nothing outside of the driver core should ever touch these fields. |
72 | */ |
73 | struct device_private { |
74 | struct klist klist_children; |
75 | struct klist_node knode_parent; |
76 | struct klist_node knode_driver; |
77 | struct klist_node knode_bus; |
78 | struct list_head deferred_probe; |
79 | void *driver_data; |
80 | struct device *device; |
81 | }; |
82 | #define to_device_private_parent(obj) \ |
83 | container_of(obj, struct device_private, knode_parent) |
84 | #define to_device_private_driver(obj) \ |
85 | container_of(obj, struct device_private, knode_driver) |
86 | #define to_device_private_bus(obj) \ |
87 | container_of(obj, struct device_private, knode_bus) |
88 | |
89 | extern int device_private_init(struct device *dev); |
90 | |
91 | /* initialisation functions */ |
92 | extern int devices_init(void); |
93 | extern int buses_init(void); |
94 | extern int classes_init(void); |
95 | extern int firmware_init(void); |
96 | #ifdef CONFIG_SYS_HYPERVISOR |
97 | extern int hypervisor_init(void); |
98 | #else |
99 | static inline int hypervisor_init(void) { return 0; } |
100 | #endif |
101 | extern int platform_bus_init(void); |
102 | extern void cpu_dev_init(void); |
103 | |
104 | extern int bus_add_device(struct device *dev); |
105 | extern void bus_probe_device(struct device *dev); |
106 | extern void bus_remove_device(struct device *dev); |
107 | |
108 | extern int bus_add_driver(struct device_driver *drv); |
109 | extern void bus_remove_driver(struct device_driver *drv); |
110 | |
111 | extern void driver_detach(struct device_driver *drv); |
112 | extern int driver_probe_device(struct device_driver *drv, struct device *dev); |
113 | extern void driver_deferred_probe_del(struct device *dev); |
114 | static inline int driver_match_device(struct device_driver *drv, |
115 | struct device *dev) |
116 | { |
117 | return drv->bus->match ? drv->bus->match(dev, drv) : 1; |
118 | } |
119 | |
120 | extern char *make_class_name(const char *name, struct kobject *kobj); |
121 | |
122 | extern int devres_release_all(struct device *dev); |
123 | |
124 | /* /sys/devices directory */ |
125 | extern struct kset *devices_kset; |
126 | |
127 | #if defined(CONFIG_MODULES) && defined(CONFIG_SYSFS) |
128 | extern void module_add_driver(struct module *mod, struct device_driver *drv); |
129 | extern void module_remove_driver(struct device_driver *drv); |
130 | #else |
131 | static inline void module_add_driver(struct module *mod, |
132 | struct device_driver *drv) { } |
133 | static inline void module_remove_driver(struct device_driver *drv) { } |
134 | #endif |
135 | |
136 | #ifdef CONFIG_DEVTMPFS |
137 | extern int devtmpfs_init(void); |
138 | #else |
139 | static inline int devtmpfs_init(void) { return 0; } |
140 | #endif |
141 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9