faa23229bd25a31c380b8f3eaa5c8c632cedb505
[pandora-kernel.git] / net / sunrpc / sunrpc_syms.c
1 /*
2  * linux/net/sunrpc/sunrpc_syms.c
3  *
4  * Symbols exported by the sunrpc module.
5  *
6  * Copyright (C) 1997 Olaf Kirch <okir@monad.swb.de>
7  */
8
9 #include <linux/module.h>
10
11 #include <linux/types.h>
12 #include <linux/uio.h>
13 #include <linux/unistd.h>
14 #include <linux/init.h>
15
16 #include <linux/sunrpc/sched.h>
17 #include <linux/sunrpc/clnt.h>
18 #include <linux/sunrpc/svc.h>
19 #include <linux/sunrpc/svcsock.h>
20 #include <linux/sunrpc/auth.h>
21 #include <linux/workqueue.h>
22 #include <linux/sunrpc/rpc_pipe_fs.h>
23 #include <linux/sunrpc/xprtsock.h>
24
25 #include "netns.h"
26
27 int sunrpc_net_id;
28
29 static __net_init int sunrpc_init_net(struct net *net)
30 {
31         return 0;
32 }
33
34 static __net_exit void sunrpc_exit_net(struct net *net)
35 {
36 }
37
38 static struct pernet_operations sunrpc_net_ops = {
39         .init = sunrpc_init_net,
40         .exit = sunrpc_exit_net,
41         .id = &sunrpc_net_id,
42         .size = sizeof(struct sunrpc_net),
43 };
44
45 extern struct cache_detail ip_map_cache, unix_gid_cache;
46
47 extern void cleanup_rpcb_clnt(void);
48
49 static int __init
50 init_sunrpc(void)
51 {
52         int err = register_rpc_pipefs();
53         if (err)
54                 goto out;
55         err = rpc_init_mempool();
56         if (err)
57                 goto out2;
58         err = rpcauth_init_module();
59         if (err)
60                 goto out3;
61
62         cache_initialize();
63
64         err = register_pernet_subsys(&sunrpc_net_ops);
65         if (err)
66                 goto out4;
67 #ifdef RPC_DEBUG
68         rpc_register_sysctl();
69 #endif
70 #ifdef CONFIG_PROC_FS
71         rpc_proc_init();
72 #endif
73         cache_register(&ip_map_cache);
74         cache_register(&unix_gid_cache);
75         svc_init_xprt_sock();   /* svc sock transport */
76         init_socket_xprt();     /* clnt sock transport */
77         return 0;
78
79 out4:
80         rpcauth_remove_module();
81 out3:
82         rpc_destroy_mempool();
83 out2:
84         unregister_rpc_pipefs();
85 out:
86         return err;
87 }
88
89 static void __exit
90 cleanup_sunrpc(void)
91 {
92         cleanup_rpcb_clnt();
93         rpcauth_remove_module();
94         cleanup_socket_xprt();
95         svc_cleanup_xprt_sock();
96         unregister_rpc_pipefs();
97         rpc_destroy_mempool();
98         cache_unregister(&ip_map_cache);
99         cache_unregister(&unix_gid_cache);
100         unregister_pernet_subsys(&sunrpc_net_ops);
101 #ifdef RPC_DEBUG
102         rpc_unregister_sysctl();
103 #endif
104 #ifdef CONFIG_PROC_FS
105         rpc_proc_exit();
106 #endif
107         rcu_barrier(); /* Wait for completion of call_rcu()'s */
108 }
109 MODULE_LICENSE("GPL");
110 fs_initcall(init_sunrpc); /* Ensure we're initialised before nfs */
111 module_exit(cleanup_sunrpc);