Loading drivers/base/attribute_container.c +20 −4 Original line number Diff line number Diff line Loading @@ -27,6 +27,21 @@ struct internal_container { struct class_device classdev; }; static void internal_container_klist_get(struct klist_node *n) { struct internal_container *ic = container_of(n, struct internal_container, node); class_device_get(&ic->classdev); } static void internal_container_klist_put(struct klist_node *n) { struct internal_container *ic = container_of(n, struct internal_container, node); class_device_put(&ic->classdev); } /** * attribute_container_classdev_to_container - given a classdev, return the container * Loading Loading @@ -57,7 +72,8 @@ int attribute_container_register(struct attribute_container *cont) { INIT_LIST_HEAD(&cont->node); klist_init(&cont->containers); klist_init(&cont->containers,internal_container_klist_get, internal_container_klist_put); down(&attribute_container_mutex); list_add_tail(&cont->node, &attribute_container_list); Loading Loading @@ -163,8 +179,8 @@ attribute_container_add_device(struct device *dev, #define klist_for_each_entry(pos, head, member, iter) \ for (klist_iter_init(head, iter); (pos = ({ \ struct klist_node *n = klist_next(iter); \ n ? ({ klist_iter_exit(iter) ; NULL; }) : \ container_of(n, typeof(*pos), member);\ n ? container_of(n, typeof(*pos), member) : \ ({ klist_iter_exit(iter) ; NULL; }); \ }) ) != NULL; ) Loading Loading @@ -206,7 +222,7 @@ attribute_container_remove_device(struct device *dev, klist_for_each_entry(ic, &cont->containers, node, &iter) { if (dev != ic->classdev.dev) continue; klist_remove(&ic->node); klist_del(&ic->node); if (fn) fn(cont, dev, &ic->classdev); else { Loading Loading
drivers/base/attribute_container.c +20 −4 Original line number Diff line number Diff line Loading @@ -27,6 +27,21 @@ struct internal_container { struct class_device classdev; }; static void internal_container_klist_get(struct klist_node *n) { struct internal_container *ic = container_of(n, struct internal_container, node); class_device_get(&ic->classdev); } static void internal_container_klist_put(struct klist_node *n) { struct internal_container *ic = container_of(n, struct internal_container, node); class_device_put(&ic->classdev); } /** * attribute_container_classdev_to_container - given a classdev, return the container * Loading Loading @@ -57,7 +72,8 @@ int attribute_container_register(struct attribute_container *cont) { INIT_LIST_HEAD(&cont->node); klist_init(&cont->containers); klist_init(&cont->containers,internal_container_klist_get, internal_container_klist_put); down(&attribute_container_mutex); list_add_tail(&cont->node, &attribute_container_list); Loading Loading @@ -163,8 +179,8 @@ attribute_container_add_device(struct device *dev, #define klist_for_each_entry(pos, head, member, iter) \ for (klist_iter_init(head, iter); (pos = ({ \ struct klist_node *n = klist_next(iter); \ n ? ({ klist_iter_exit(iter) ; NULL; }) : \ container_of(n, typeof(*pos), member);\ n ? container_of(n, typeof(*pos), member) : \ ({ klist_iter_exit(iter) ; NULL; }); \ }) ) != NULL; ) Loading Loading @@ -206,7 +222,7 @@ attribute_container_remove_device(struct device *dev, klist_for_each_entry(ic, &cont->containers, node, &iter) { if (dev != ic->classdev.dev) continue; klist_remove(&ic->node); klist_del(&ic->node); if (fn) fn(cont, dev, &ic->classdev); else { Loading