Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/net/sunrpc/sunrpc_syms.c
15109 views
1
/*
2
* linux/net/sunrpc/sunrpc_syms.c
3
*
4
* Symbols exported by the sunrpc module.
5
*
6
* Copyright (C) 1997 Olaf Kirch <[email protected]>
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
int err;
32
33
err = rpc_proc_init(net);
34
if (err)
35
goto err_proc;
36
37
err = ip_map_cache_create(net);
38
if (err)
39
goto err_ipmap;
40
41
return 0;
42
43
err_ipmap:
44
rpc_proc_exit(net);
45
err_proc:
46
return err;
47
}
48
49
static __net_exit void sunrpc_exit_net(struct net *net)
50
{
51
ip_map_cache_destroy(net);
52
rpc_proc_exit(net);
53
}
54
55
static struct pernet_operations sunrpc_net_ops = {
56
.init = sunrpc_init_net,
57
.exit = sunrpc_exit_net,
58
.id = &sunrpc_net_id,
59
.size = sizeof(struct sunrpc_net),
60
};
61
62
extern struct cache_detail unix_gid_cache;
63
64
extern void cleanup_rpcb_clnt(void);
65
66
static int __init
67
init_sunrpc(void)
68
{
69
int err = register_rpc_pipefs();
70
if (err)
71
goto out;
72
err = rpc_init_mempool();
73
if (err)
74
goto out2;
75
err = rpcauth_init_module();
76
if (err)
77
goto out3;
78
79
cache_initialize();
80
81
err = register_pernet_subsys(&sunrpc_net_ops);
82
if (err)
83
goto out4;
84
#ifdef RPC_DEBUG
85
rpc_register_sysctl();
86
#endif
87
cache_register(&unix_gid_cache);
88
svc_init_xprt_sock(); /* svc sock transport */
89
init_socket_xprt(); /* clnt sock transport */
90
return 0;
91
92
out4:
93
rpcauth_remove_module();
94
out3:
95
rpc_destroy_mempool();
96
out2:
97
unregister_rpc_pipefs();
98
out:
99
return err;
100
}
101
102
static void __exit
103
cleanup_sunrpc(void)
104
{
105
cleanup_rpcb_clnt();
106
rpcauth_remove_module();
107
cleanup_socket_xprt();
108
svc_cleanup_xprt_sock();
109
unregister_rpc_pipefs();
110
rpc_destroy_mempool();
111
cache_unregister(&unix_gid_cache);
112
unregister_pernet_subsys(&sunrpc_net_ops);
113
#ifdef RPC_DEBUG
114
rpc_unregister_sysctl();
115
#endif
116
rcu_barrier(); /* Wait for completion of call_rcu()'s */
117
}
118
MODULE_LICENSE("GPL");
119
fs_initcall(init_sunrpc); /* Ensure we're initialised before nfs */
120
module_exit(cleanup_sunrpc);
121
122