diff options
author | Dmitry Torokhov <dtor_core@ameritech.net> | 2004-01-19 00:21:50 -0800 |
---|---|---|
committer | Dmitry Torokhov <dtor_core@ameritech.net> | 2004-01-19 00:21:50 -0800 |
commit | b989f180460c5b491b81c9d8227fc31c00c3bbc2 (patch) | |
tree | 390b63227764e444c3e84c56f14e4e4f6e7025c7 /lib | |
parent | 0010bc50c1863814bf9b9c37dabde0b48207f665 (diff) | |
download | history-b989f180460c5b491b81c9d8227fc31c00c3bbc2.tar.gz |
[PATCH] kobject: make kobject hotplug function public
make kobject hotplug mechanism public so that others may call it.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/kobject.c | 49 |
1 files changed, 21 insertions, 28 deletions
diff --git a/lib/kobject.c b/lib/kobject.c index 51787be1555262..8ab50700d2c2b9 100644 --- a/lib/kobject.c +++ b/lib/kobject.c @@ -198,9 +198,24 @@ exit: kfree(envp); return; } + +void kobject_hotplug(const char *action, struct kobject *kobj) +{ + struct kobject * top_kobj = kobj; + + /* If this kobj does not belong to a kset, + try to find a parent that does. */ + if (!top_kobj->kset && top_kobj->parent) { + do { + top_kobj = top_kobj->parent; + } while (!top_kobj->kset && top_kobj->parent); + } + + if (top_kobj->kset && top_kobj->kset->hotplug_ops) + kset_hotplug(action, top_kobj->kset, kobj); +} #else -static void kset_hotplug(const char *action, struct kset *kset, - struct kobject *kobj) +void kobject_hotplug(const char *action, struct kobject *kobj) { return; } @@ -248,7 +263,6 @@ int kobject_add(struct kobject * kobj) { int error = 0; struct kobject * parent; - struct kobject * top_kobj; if (!(kobj = kobject_get(kobj))) return -ENOENT; @@ -277,18 +291,9 @@ int kobject_add(struct kobject * kobj) if (parent) kobject_put(parent); } else { - /* If this kobj does not belong to a kset, - try to find a parent that does. */ - top_kobj = kobj; - if (!top_kobj->kset && top_kobj->parent) { - do { - top_kobj = top_kobj->parent; - } while (!top_kobj->kset && top_kobj->parent); - } - - if (top_kobj->kset && top_kobj->kset->hotplug_ops) - kset_hotplug("add", top_kobj->kset, kobj); + kobject_hotplug("add", kobj); } + return error; } @@ -396,20 +401,7 @@ void kobject_rename(struct kobject * kobj, char *new_name) void kobject_del(struct kobject * kobj) { - struct kobject * top_kobj; - - /* If this kobj does not belong to a kset, - try to find a parent that does. */ - top_kobj = kobj; - if (!top_kobj->kset && top_kobj->parent) { - do { - top_kobj = top_kobj->parent; - } while (!top_kobj->kset && top_kobj->parent); - } - - if (top_kobj->kset && top_kobj->kset->hotplug_ops) - kset_hotplug("remove", top_kobj->kset, kobj); - + kobject_hotplug("remove", kobj); sysfs_remove_dir(kobj); unlink(kobj); } @@ -638,6 +630,7 @@ EXPORT_SYMBOL(kobject_register); EXPORT_SYMBOL(kobject_unregister); EXPORT_SYMBOL(kobject_get); EXPORT_SYMBOL(kobject_put); +EXPORT_SYMBOL(kobject_hotplug); EXPORT_SYMBOL(kset_register); EXPORT_SYMBOL(kset_unregister); |