diff options
Diffstat (limited to 'drivers/base/bus.c')
| -rw-r--r-- | drivers/base/bus.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 17e96698410e..03204bfd17af 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c | |||
| @@ -568,6 +568,36 @@ static void bus_remove_attrs(struct bus_type * bus) | |||
| 568 | } | 568 | } |
| 569 | } | 569 | } |
| 570 | 570 | ||
| 571 | static void klist_devices_get(struct klist_node *n) | ||
| 572 | { | ||
| 573 | struct device *dev = container_of(n, struct device, knode_bus); | ||
| 574 | |||
| 575 | get_device(dev); | ||
| 576 | } | ||
| 577 | |||
| 578 | static void klist_devices_put(struct klist_node *n) | ||
| 579 | { | ||
| 580 | struct device *dev = container_of(n, struct device, knode_bus); | ||
| 581 | |||
| 582 | put_device(dev); | ||
| 583 | } | ||
| 584 | |||
| 585 | static void klist_drivers_get(struct klist_node *n) | ||
| 586 | { | ||
| 587 | struct device_driver *drv = container_of(n, struct device_driver, | ||
| 588 | knode_bus); | ||
| 589 | |||
| 590 | get_driver(drv); | ||
| 591 | } | ||
| 592 | |||
| 593 | static void klist_drivers_put(struct klist_node *n) | ||
| 594 | { | ||
| 595 | struct device_driver *drv = container_of(n, struct device_driver, | ||
| 596 | knode_bus); | ||
| 597 | |||
| 598 | put_driver(drv); | ||
| 599 | } | ||
| 600 | |||
| 571 | /** | 601 | /** |
| 572 | * bus_register - register a bus with the system. | 602 | * bus_register - register a bus with the system. |
| 573 | * @bus: bus. | 603 | * @bus: bus. |
| @@ -602,8 +632,8 @@ int bus_register(struct bus_type * bus) | |||
| 602 | if (retval) | 632 | if (retval) |
| 603 | goto bus_drivers_fail; | 633 | goto bus_drivers_fail; |
| 604 | 634 | ||
| 605 | klist_init(&bus->klist_devices); | 635 | klist_init(&bus->klist_devices, klist_devices_get, klist_devices_put); |
| 606 | klist_init(&bus->klist_drivers); | 636 | klist_init(&bus->klist_drivers, klist_drivers_get, klist_drivers_put); |
| 607 | bus_add_attrs(bus); | 637 | bus_add_attrs(bus); |
| 608 | 638 | ||
| 609 | pr_debug("bus type '%s' registered\n", bus->name); | 639 | pr_debug("bus type '%s' registered\n", bus->name); |
