diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/kobject.c | 69 |
1 files changed, 8 insertions, 61 deletions
diff --git a/lib/kobject.c b/lib/kobject.c index cecf2fbede3e..fc5f3f6e7329 100644 --- a/lib/kobject.c +++ b/lib/kobject.c | |||
| @@ -582,22 +582,10 @@ void kset_init(struct kset * k) | |||
| 582 | /** | 582 | /** |
| 583 | * kset_add - add a kset object to the hierarchy. | 583 | * kset_add - add a kset object to the hierarchy. |
| 584 | * @k: kset. | 584 | * @k: kset. |
| 585 | * | ||
| 586 | * Simply, this adds the kset's embedded kobject to the | ||
| 587 | * hierarchy. | ||
| 588 | * We also try to make sure that the kset's embedded kobject | ||
| 589 | * has a parent before it is added. We only care if the embedded | ||
| 590 | * kobject is not part of a kset itself, since kobject_add() | ||
| 591 | * assigns a parent in that case. | ||
| 592 | * If that is the case, and the kset has a controlling subsystem, | ||
| 593 | * then we set the kset's parent to be said subsystem. | ||
| 594 | */ | 585 | */ |
| 595 | 586 | ||
| 596 | int kset_add(struct kset * k) | 587 | int kset_add(struct kset * k) |
| 597 | { | 588 | { |
| 598 | if (!k->kobj.parent && !k->kobj.kset && k->subsys) | ||
| 599 | k->kobj.parent = &k->subsys->kset.kobj; | ||
| 600 | |||
| 601 | return kobject_add(&k->kobj); | 589 | return kobject_add(&k->kobj); |
| 602 | } | 590 | } |
| 603 | 591 | ||
| @@ -656,53 +644,28 @@ struct kobject * kset_find_obj(struct kset * kset, const char * name) | |||
| 656 | return ret; | 644 | return ret; |
| 657 | } | 645 | } |
| 658 | 646 | ||
| 659 | 647 | void subsystem_init(struct kset *s) | |
| 660 | void subsystem_init(struct subsystem * s) | ||
| 661 | { | 648 | { |
| 662 | kset_init(&s->kset); | 649 | kset_init(s); |
| 663 | } | 650 | } |
| 664 | 651 | ||
| 665 | /** | 652 | int subsystem_register(struct kset *s) |
| 666 | * subsystem_register - register a subsystem. | ||
| 667 | * @s: the subsystem we're registering. | ||
| 668 | * | ||
| 669 | * Once we register the subsystem, we want to make sure that | ||
| 670 | * the kset points back to this subsystem. | ||
| 671 | */ | ||
| 672 | |||
| 673 | int subsystem_register(struct subsystem * s) | ||
| 674 | { | 653 | { |
| 675 | int error; | 654 | return kset_register(s); |
| 676 | |||
| 677 | if (!s) | ||
| 678 | return -EINVAL; | ||
| 679 | |||
| 680 | subsystem_init(s); | ||
| 681 | pr_debug("subsystem %s: registering\n",s->kset.kobj.name); | ||
| 682 | |||
| 683 | if (!(error = kset_add(&s->kset))) { | ||
| 684 | if (!s->kset.subsys) | ||
| 685 | s->kset.subsys = s; | ||
| 686 | } | ||
| 687 | return error; | ||
| 688 | } | 655 | } |
| 689 | 656 | ||
| 690 | void subsystem_unregister(struct subsystem * s) | 657 | void subsystem_unregister(struct kset *s) |
| 691 | { | 658 | { |
| 692 | if (!s) | 659 | kset_unregister(s); |
| 693 | return; | ||
| 694 | pr_debug("subsystem %s: unregistering\n",s->kset.kobj.name); | ||
| 695 | kset_unregister(&s->kset); | ||
| 696 | } | 660 | } |
| 697 | 661 | ||
| 698 | |||
| 699 | /** | 662 | /** |
| 700 | * subsystem_create_file - export sysfs attribute file. | 663 | * subsystem_create_file - export sysfs attribute file. |
| 701 | * @s: subsystem. | 664 | * @s: subsystem. |
| 702 | * @a: subsystem attribute descriptor. | 665 | * @a: subsystem attribute descriptor. |
| 703 | */ | 666 | */ |
| 704 | 667 | ||
| 705 | int subsys_create_file(struct subsystem * s, struct subsys_attribute * a) | 668 | int subsys_create_file(struct kset *s, struct subsys_attribute *a) |
| 706 | { | 669 | { |
| 707 | int error = 0; | 670 | int error = 0; |
| 708 | 671 | ||
| @@ -710,28 +673,12 @@ int subsys_create_file(struct subsystem * s, struct subsys_attribute * a) | |||
| 710 | return -EINVAL; | 673 | return -EINVAL; |
| 711 | 674 | ||
| 712 | if (subsys_get(s)) { | 675 | if (subsys_get(s)) { |
| 713 | error = sysfs_create_file(&s->kset.kobj,&a->attr); | 676 | error = sysfs_create_file(&s->kobj, &a->attr); |
| 714 | subsys_put(s); | 677 | subsys_put(s); |
| 715 | } | 678 | } |
| 716 | return error; | 679 | return error; |
| 717 | } | 680 | } |
| 718 | 681 | ||
| 719 | |||
| 720 | /** | ||
| 721 | * subsystem_remove_file - remove sysfs attribute file. | ||
| 722 | * @s: subsystem. | ||
| 723 | * @a: attribute desciptor. | ||
| 724 | */ | ||
| 725 | #if 0 | ||
| 726 | void subsys_remove_file(struct subsystem * s, struct subsys_attribute * a) | ||
| 727 | { | ||
| 728 | if (subsys_get(s)) { | ||
| 729 | sysfs_remove_file(&s->kset.kobj,&a->attr); | ||
| 730 | subsys_put(s); | ||
| 731 | } | ||
| 732 | } | ||
| 733 | #endif /* 0 */ | ||
| 734 | |||
| 735 | EXPORT_SYMBOL(kobject_init); | 682 | EXPORT_SYMBOL(kobject_init); |
| 736 | EXPORT_SYMBOL(kobject_register); | 683 | EXPORT_SYMBOL(kobject_register); |
| 737 | EXPORT_SYMBOL(kobject_unregister); | 684 | EXPORT_SYMBOL(kobject_unregister); |
