diff options
author | Satyam Sharma <satyam@infradead.org> | 2007-10-12 10:11:32 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-10-12 10:13:05 -0400 |
commit | 076fc808ab804c6cfb40fd0caa0b74dd50e0d5de (patch) | |
tree | 77c709e627a10c0401295d3c7fc291028eba424f /arch/s390/appldata | |
parent | 11b8bf0107e688434b9e0570fd05e7c715534f3b (diff) |
[S390] appldata_base: Remove module_exit function and modular stuff
arch/s390/Kconfig tells us that CONFIG_APPLDATA_BASE is bool and hence can
never be built modular. Given this, defining appldata_exit() function is
pointless (and wasteful, actually). Remove all that.
Previous patch annotated appldata_offline_cpu() as __cpuexit, but now with the
__exit function appldata_exit() gone, the only callsite that references it is
__cpuinit, so this function can also be __cpuinit, thereby saving space when
HOTPLUG_CPU=n.
Signed-off-by: Satyam Sharma <satyam@infradead.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/appldata')
-rw-r--r-- | arch/s390/appldata/appldata_base.c | 54 |
1 files changed, 2 insertions, 52 deletions
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index a355d8133261..ac61cf43a7d9 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
@@ -547,7 +547,7 @@ static void __cpuinit appldata_online_cpu(int cpu) | |||
547 | spin_unlock(&appldata_timer_lock); | 547 | spin_unlock(&appldata_timer_lock); |
548 | } | 548 | } |
549 | 549 | ||
550 | static void __cpuexit appldata_offline_cpu(int cpu) | 550 | static void __cpuinit appldata_offline_cpu(int cpu) |
551 | { | 551 | { |
552 | del_virt_timer(&per_cpu(appldata_timer, cpu)); | 552 | del_virt_timer(&per_cpu(appldata_timer, cpu)); |
553 | if (atomic_dec_and_test(&appldata_expire_count)) { | 553 | if (atomic_dec_and_test(&appldata_expire_count)) { |
@@ -607,65 +607,15 @@ static int __init appldata_init(void) | |||
607 | register_hotcpu_notifier(&appldata_nb); | 607 | register_hotcpu_notifier(&appldata_nb); |
608 | 608 | ||
609 | appldata_sysctl_header = register_sysctl_table(appldata_dir_table); | 609 | appldata_sysctl_header = register_sysctl_table(appldata_dir_table); |
610 | #ifdef MODULE | ||
611 | appldata_dir_table[0].de->owner = THIS_MODULE; | ||
612 | appldata_table[0].de->owner = THIS_MODULE; | ||
613 | appldata_table[1].de->owner = THIS_MODULE; | ||
614 | #endif | ||
615 | 610 | ||
616 | P_DEBUG("Base interface initialized.\n"); | 611 | P_DEBUG("Base interface initialized.\n"); |
617 | return 0; | 612 | return 0; |
618 | } | 613 | } |
619 | 614 | ||
620 | /* | 615 | __initcall(appldata_init); |
621 | * appldata_exit() | ||
622 | * | ||
623 | * stop timer, unregister /proc entries | ||
624 | */ | ||
625 | static void __exit appldata_exit(void) | ||
626 | { | ||
627 | struct list_head *lh; | ||
628 | struct appldata_ops *ops; | ||
629 | int rc, i; | ||
630 | 616 | ||
631 | P_DEBUG("Unloading module ...\n"); | ||
632 | /* | ||
633 | * ops list should be empty, but just in case something went wrong... | ||
634 | */ | ||
635 | spin_lock(&appldata_ops_lock); | ||
636 | list_for_each(lh, &appldata_ops_list) { | ||
637 | ops = list_entry(lh, struct appldata_ops, list); | ||
638 | rc = appldata_diag(ops->record_nr, APPLDATA_STOP_REC, | ||
639 | (unsigned long) ops->data, ops->size, | ||
640 | ops->mod_lvl); | ||
641 | if (rc != 0) { | ||
642 | P_ERROR("STOP DIAG 0xDC for %s failed, " | ||
643 | "return code: %d\n", ops->name, rc); | ||
644 | } | ||
645 | } | ||
646 | spin_unlock(&appldata_ops_lock); | ||
647 | |||
648 | unregister_hotcpu_notifier(&appldata_nb); | ||
649 | |||
650 | for_each_online_cpu(i) | ||
651 | appldata_offline_cpu(i); | ||
652 | |||
653 | appldata_timer_active = 0; | ||
654 | |||
655 | unregister_sysctl_table(appldata_sysctl_header); | ||
656 | |||
657 | destroy_workqueue(appldata_wq); | ||
658 | P_DEBUG("... module unloaded!\n"); | ||
659 | } | ||
660 | /**************************** init / exit <END> ******************************/ | 617 | /**************************** init / exit <END> ******************************/ |
661 | 618 | ||
662 | |||
663 | module_init(appldata_init); | ||
664 | module_exit(appldata_exit); | ||
665 | MODULE_LICENSE("GPL"); | ||
666 | MODULE_AUTHOR("Gerald Schaefer"); | ||
667 | MODULE_DESCRIPTION("Linux-VM Monitor Stream, base infrastructure"); | ||
668 | |||
669 | EXPORT_SYMBOL_GPL(appldata_register_ops); | 619 | EXPORT_SYMBOL_GPL(appldata_register_ops); |
670 | EXPORT_SYMBOL_GPL(appldata_unregister_ops); | 620 | EXPORT_SYMBOL_GPL(appldata_unregister_ops); |
671 | EXPORT_SYMBOL_GPL(appldata_diag); | 621 | EXPORT_SYMBOL_GPL(appldata_diag); |