[openib-general] 2 questions on physical code layout
Roland Dreier
Mon Oct 25 11:18:40 PDT 2004
By the way, here's what the diff to the code to combine ib_mad and
ib_agent looks like (appropriate Makefile changes are also needed).
Index: linux-kernel/infiniband/core/ib_agent.c
===================================================================
--- linux-kernel.orig/infiniband/core/ib_agent.c 2004-10-24 21:28:25.000000000 -0700
+++ linux-kernel/infiniband/core/ib_agent.c 2004-10-25 11:11:46.000000000 -0700
@@ -837,26 +837,8 @@
return;
}
-static struct ib_client ib_agent_client = {
+struct ib_client agent_client = {
.name = "ib_agent",
.add = ib_agent_init_device,
.remove = ib_agent_remove_device
};
-
-static int __init ib_agent_init(void)
-{
- if (ib_register_client(&ib_agent_client)) {
- printk(KERN_ERR SPFX "Couldn't register ib_agent client\n");
- return -EINVAL;
- }
-
- return 0;
-}
-
-static void __exit ib_agent_exit(void)
-{
- ib_unregister_client(&ib_agent_client);
-}
-
-module_init(ib_agent_init);
-module_exit(ib_agent_exit);
Index: linux-kernel/infiniband/core/ib_mad.c
===================================================================
--- linux-kernel.orig/infiniband/core/ib_mad.c 2004-10-24 21:28:25.000000000 -0700
+++ linux-kernel/infiniband/core/ib_mad.c 2004-10-25 11:12:58.000000000 -0700
@@ -1999,6 +1999,8 @@
.remove = ib_mad_remove_device
};
+extern struct ib_client agent_client;
+
static int __init ib_mad_init_module(void)
{
int ret;
@@ -2022,8 +2024,17 @@
ret = -EINVAL;
goto error2;
}
+
+ if (ib_register_client(&agent_client)) {
+ printk(KERN_ERR PFX "Couldn't register ib_agent client\n");
+ ret = -EINVAL;
+ goto error3;
+ }
+
return 0;
+error3:
+ ib_unregister_client(&mad_client);
error2:
kmem_cache_destroy(ib_mad_cache);
error1:
@@ -2032,6 +2043,7 @@
static void __exit ib_mad_cleanup_module(void)
{
+ ib_unregister_client(&agent_client);
ib_unregister_client(&mad_client);
if (kmem_cache_destroy(ib_mad_cache)) {
More information about the openib-general mailing list