diff options
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r-- | drivers/base/bus.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 301b9c6ece86..def1e009ad9d 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -1334,6 +1334,26 @@ bool bus_is_registered(const struct bus_type *bus) return is_initialized; } +/** + * bus_get_dev_root - return a pointer to the "device root" of a bus + * @bus: bus to return the device root of. + * + * If a bus has a "device root" structure, return it, WITH THE REFERENCE + * COUNT INCREMENTED. + * + * Note, when finished with the device, a call to put_device() is required. + * + * If the device root is not present (or bus is not a valid pointer), NULL + * will be returned. + */ +struct device *bus_get_dev_root(const struct bus_type *bus) +{ + if (bus) + return get_device(bus->dev_root); + return NULL; +} +EXPORT_SYMBOL_GPL(bus_get_dev_root); + int __init buses_init(void) { bus_kset = kset_create_and_add("bus", &bus_uevent_ops, NULL); |