diff options
Diffstat (limited to 'net/iucv/iucv.c')
-rw-r--r-- | net/iucv/iucv.c | 49 |
1 files changed, 22 insertions, 27 deletions
diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c index 903bdb6eaaa1..fb3faf72e850 100644 --- a/net/iucv/iucv.c +++ b/net/iucv/iucv.c | |||
@@ -32,7 +32,6 @@ | |||
32 | 32 | ||
33 | #include <linux/module.h> | 33 | #include <linux/module.h> |
34 | #include <linux/moduleparam.h> | 34 | #include <linux/moduleparam.h> |
35 | |||
36 | #include <linux/spinlock.h> | 35 | #include <linux/spinlock.h> |
37 | #include <linux/kernel.h> | 36 | #include <linux/kernel.h> |
38 | #include <linux/slab.h> | 37 | #include <linux/slab.h> |
@@ -69,7 +68,7 @@ | |||
69 | #define IUCV_IPNORPY 0x10 | 68 | #define IUCV_IPNORPY 0x10 |
70 | #define IUCV_IPALL 0x80 | 69 | #define IUCV_IPALL 0x80 |
71 | 70 | ||
72 | static int iucv_bus_match (struct device *dev, struct device_driver *drv) | 71 | static int iucv_bus_match(struct device *dev, struct device_driver *drv) |
73 | { | 72 | { |
74 | return 0; | 73 | return 0; |
75 | } | 74 | } |
@@ -78,8 +77,11 @@ struct bus_type iucv_bus = { | |||
78 | .name = "iucv", | 77 | .name = "iucv", |
79 | .match = iucv_bus_match, | 78 | .match = iucv_bus_match, |
80 | }; | 79 | }; |
80 | EXPORT_SYMBOL(iucv_bus); | ||
81 | 81 | ||
82 | struct device *iucv_root; | 82 | struct device *iucv_root; |
83 | EXPORT_SYMBOL(iucv_root); | ||
84 | |||
83 | static int iucv_available; | 85 | static int iucv_available; |
84 | 86 | ||
85 | /* General IUCV interrupt structure */ | 87 | /* General IUCV interrupt structure */ |
@@ -405,7 +407,7 @@ static void iucv_declare_cpu(void *data) | |||
405 | rc = iucv_call_b2f0(IUCV_DECLARE_BUFFER, parm); | 407 | rc = iucv_call_b2f0(IUCV_DECLARE_BUFFER, parm); |
406 | if (rc) { | 408 | if (rc) { |
407 | char *err = "Unknown"; | 409 | char *err = "Unknown"; |
408 | switch(rc) { | 410 | switch (rc) { |
409 | case 0x03: | 411 | case 0x03: |
410 | err = "Directory error"; | 412 | err = "Directory error"; |
411 | break; | 413 | break; |
@@ -588,7 +590,7 @@ static int __cpuinit iucv_cpu_notify(struct notifier_block *self, | |||
588 | return NOTIFY_OK; | 590 | return NOTIFY_OK; |
589 | } | 591 | } |
590 | 592 | ||
591 | static struct notifier_block iucv_cpu_notifier = { | 593 | static struct notifier_block __cpuinitdata iucv_cpu_notifier = { |
592 | .notifier_call = iucv_cpu_notify, | 594 | .notifier_call = iucv_cpu_notify, |
593 | }; | 595 | }; |
594 | 596 | ||
@@ -691,6 +693,7 @@ out_mutex: | |||
691 | mutex_unlock(&iucv_register_mutex); | 693 | mutex_unlock(&iucv_register_mutex); |
692 | return rc; | 694 | return rc; |
693 | } | 695 | } |
696 | EXPORT_SYMBOL(iucv_register); | ||
694 | 697 | ||
695 | /** | 698 | /** |
696 | * iucv_unregister | 699 | * iucv_unregister |
@@ -723,6 +726,7 @@ void iucv_unregister(struct iucv_handler *handler, int smp) | |||
723 | iucv_setmask_mp(); | 726 | iucv_setmask_mp(); |
724 | mutex_unlock(&iucv_register_mutex); | 727 | mutex_unlock(&iucv_register_mutex); |
725 | } | 728 | } |
729 | EXPORT_SYMBOL(iucv_unregister); | ||
726 | 730 | ||
727 | /** | 731 | /** |
728 | * iucv_path_accept | 732 | * iucv_path_accept |
@@ -761,6 +765,7 @@ int iucv_path_accept(struct iucv_path *path, struct iucv_handler *handler, | |||
761 | local_bh_enable(); | 765 | local_bh_enable(); |
762 | return rc; | 766 | return rc; |
763 | } | 767 | } |
768 | EXPORT_SYMBOL(iucv_path_accept); | ||
764 | 769 | ||
765 | /** | 770 | /** |
766 | * iucv_path_connect | 771 | * iucv_path_connect |
@@ -824,6 +829,7 @@ int iucv_path_connect(struct iucv_path *path, struct iucv_handler *handler, | |||
824 | spin_unlock_bh(&iucv_table_lock); | 829 | spin_unlock_bh(&iucv_table_lock); |
825 | return rc; | 830 | return rc; |
826 | } | 831 | } |
832 | EXPORT_SYMBOL(iucv_path_connect); | ||
827 | 833 | ||
828 | /** | 834 | /** |
829 | * iucv_path_quiesce: | 835 | * iucv_path_quiesce: |
@@ -850,6 +856,7 @@ int iucv_path_quiesce(struct iucv_path *path, u8 userdata[16]) | |||
850 | local_bh_enable(); | 856 | local_bh_enable(); |
851 | return rc; | 857 | return rc; |
852 | } | 858 | } |
859 | EXPORT_SYMBOL(iucv_path_quiesce); | ||
853 | 860 | ||
854 | /** | 861 | /** |
855 | * iucv_path_resume: | 862 | * iucv_path_resume: |
@@ -890,7 +897,6 @@ int iucv_path_sever(struct iucv_path *path, u8 userdata[16]) | |||
890 | { | 897 | { |
891 | int rc; | 898 | int rc; |
892 | 899 | ||
893 | |||
894 | preempt_disable(); | 900 | preempt_disable(); |
895 | if (iucv_active_cpu != smp_processor_id()) | 901 | if (iucv_active_cpu != smp_processor_id()) |
896 | spin_lock_bh(&iucv_table_lock); | 902 | spin_lock_bh(&iucv_table_lock); |
@@ -904,6 +910,7 @@ int iucv_path_sever(struct iucv_path *path, u8 userdata[16]) | |||
904 | preempt_enable(); | 910 | preempt_enable(); |
905 | return rc; | 911 | return rc; |
906 | } | 912 | } |
913 | EXPORT_SYMBOL(iucv_path_sever); | ||
907 | 914 | ||
908 | /** | 915 | /** |
909 | * iucv_message_purge | 916 | * iucv_message_purge |
@@ -936,6 +943,7 @@ int iucv_message_purge(struct iucv_path *path, struct iucv_message *msg, | |||
936 | local_bh_enable(); | 943 | local_bh_enable(); |
937 | return rc; | 944 | return rc; |
938 | } | 945 | } |
946 | EXPORT_SYMBOL(iucv_message_purge); | ||
939 | 947 | ||
940 | /** | 948 | /** |
941 | * iucv_message_receive | 949 | * iucv_message_receive |
@@ -1006,6 +1014,7 @@ int iucv_message_receive(struct iucv_path *path, struct iucv_message *msg, | |||
1006 | local_bh_enable(); | 1014 | local_bh_enable(); |
1007 | return rc; | 1015 | return rc; |
1008 | } | 1016 | } |
1017 | EXPORT_SYMBOL(iucv_message_receive); | ||
1009 | 1018 | ||
1010 | /** | 1019 | /** |
1011 | * iucv_message_reject | 1020 | * iucv_message_reject |
@@ -1034,6 +1043,7 @@ int iucv_message_reject(struct iucv_path *path, struct iucv_message *msg) | |||
1034 | local_bh_enable(); | 1043 | local_bh_enable(); |
1035 | return rc; | 1044 | return rc; |
1036 | } | 1045 | } |
1046 | EXPORT_SYMBOL(iucv_message_reject); | ||
1037 | 1047 | ||
1038 | /** | 1048 | /** |
1039 | * iucv_message_reply | 1049 | * iucv_message_reply |
@@ -1077,6 +1087,7 @@ int iucv_message_reply(struct iucv_path *path, struct iucv_message *msg, | |||
1077 | local_bh_enable(); | 1087 | local_bh_enable(); |
1078 | return rc; | 1088 | return rc; |
1079 | } | 1089 | } |
1090 | EXPORT_SYMBOL(iucv_message_reply); | ||
1080 | 1091 | ||
1081 | /** | 1092 | /** |
1082 | * iucv_message_send | 1093 | * iucv_message_send |
@@ -1125,6 +1136,7 @@ int iucv_message_send(struct iucv_path *path, struct iucv_message *msg, | |||
1125 | local_bh_enable(); | 1136 | local_bh_enable(); |
1126 | return rc; | 1137 | return rc; |
1127 | } | 1138 | } |
1139 | EXPORT_SYMBOL(iucv_message_send); | ||
1128 | 1140 | ||
1129 | /** | 1141 | /** |
1130 | * iucv_message_send2way | 1142 | * iucv_message_send2way |
@@ -1181,6 +1193,7 @@ int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg, | |||
1181 | local_bh_enable(); | 1193 | local_bh_enable(); |
1182 | return rc; | 1194 | return rc; |
1183 | } | 1195 | } |
1196 | EXPORT_SYMBOL(iucv_message_send2way); | ||
1184 | 1197 | ||
1185 | /** | 1198 | /** |
1186 | * iucv_path_pending | 1199 | * iucv_path_pending |
@@ -1572,7 +1585,7 @@ static void iucv_external_interrupt(u16 code) | |||
1572 | * | 1585 | * |
1573 | * Allocates and initializes various data structures. | 1586 | * Allocates and initializes various data structures. |
1574 | */ | 1587 | */ |
1575 | static int iucv_init(void) | 1588 | static int __init iucv_init(void) |
1576 | { | 1589 | { |
1577 | int rc; | 1590 | int rc; |
1578 | 1591 | ||
@@ -1583,7 +1596,7 @@ static int iucv_init(void) | |||
1583 | rc = iucv_query_maxconn(); | 1596 | rc = iucv_query_maxconn(); |
1584 | if (rc) | 1597 | if (rc) |
1585 | goto out; | 1598 | goto out; |
1586 | rc = register_external_interrupt (0x4000, iucv_external_interrupt); | 1599 | rc = register_external_interrupt(0x4000, iucv_external_interrupt); |
1587 | if (rc) | 1600 | if (rc) |
1588 | goto out; | 1601 | goto out; |
1589 | rc = bus_register(&iucv_bus); | 1602 | rc = bus_register(&iucv_bus); |
@@ -1594,7 +1607,7 @@ static int iucv_init(void) | |||
1594 | rc = PTR_ERR(iucv_root); | 1607 | rc = PTR_ERR(iucv_root); |
1595 | goto out_bus; | 1608 | goto out_bus; |
1596 | } | 1609 | } |
1597 | /* Note: GFP_DMA used used to get memory below 2G */ | 1610 | /* Note: GFP_DMA used to get memory below 2G */ |
1598 | iucv_irq_data = percpu_alloc(sizeof(struct iucv_irq_data), | 1611 | iucv_irq_data = percpu_alloc(sizeof(struct iucv_irq_data), |
1599 | GFP_KERNEL|GFP_DMA); | 1612 | GFP_KERNEL|GFP_DMA); |
1600 | if (!iucv_irq_data) { | 1613 | if (!iucv_irq_data) { |
@@ -1632,7 +1645,7 @@ out: | |||
1632 | * | 1645 | * |
1633 | * Frees everything allocated from iucv_init. | 1646 | * Frees everything allocated from iucv_init. |
1634 | */ | 1647 | */ |
1635 | static void iucv_exit(void) | 1648 | static void __exit iucv_exit(void) |
1636 | { | 1649 | { |
1637 | struct iucv_irq_list *p, *n; | 1650 | struct iucv_irq_list *p, *n; |
1638 | 1651 | ||
@@ -1653,24 +1666,6 @@ static void iucv_exit(void) | |||
1653 | subsys_initcall(iucv_init); | 1666 | subsys_initcall(iucv_init); |
1654 | module_exit(iucv_exit); | 1667 | module_exit(iucv_exit); |
1655 | 1668 | ||
1656 | /** | ||
1657 | * Export all public stuff | ||
1658 | */ | ||
1659 | EXPORT_SYMBOL (iucv_bus); | ||
1660 | EXPORT_SYMBOL (iucv_root); | ||
1661 | EXPORT_SYMBOL (iucv_register); | ||
1662 | EXPORT_SYMBOL (iucv_unregister); | ||
1663 | EXPORT_SYMBOL (iucv_path_accept); | ||
1664 | EXPORT_SYMBOL (iucv_path_connect); | ||
1665 | EXPORT_SYMBOL (iucv_path_quiesce); | ||
1666 | EXPORT_SYMBOL (iucv_path_sever); | ||
1667 | EXPORT_SYMBOL (iucv_message_purge); | ||
1668 | EXPORT_SYMBOL (iucv_message_receive); | ||
1669 | EXPORT_SYMBOL (iucv_message_reject); | ||
1670 | EXPORT_SYMBOL (iucv_message_reply); | ||
1671 | EXPORT_SYMBOL (iucv_message_send); | ||
1672 | EXPORT_SYMBOL (iucv_message_send2way); | ||
1673 | |||
1674 | MODULE_AUTHOR("(C) 2001 IBM Corp. by Fritz Elfert (felfert@millenux.com)"); | 1669 | MODULE_AUTHOR("(C) 2001 IBM Corp. by Fritz Elfert (felfert@millenux.com)"); |
1675 | MODULE_DESCRIPTION("Linux for S/390 IUCV lowlevel driver"); | 1670 | MODULE_DESCRIPTION("Linux for S/390 IUCV lowlevel driver"); |
1676 | MODULE_LICENSE("GPL"); | 1671 | MODULE_LICENSE("GPL"); |