linux/net/sunrpc/sunrpc_syms.c
<<
>>
Prefs
   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
  27int sunrpc_net_id;
  28
  29static __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
  43err_ipmap:
  44        rpc_proc_exit(net);
  45err_proc:
  46        return err;
  47}
  48
  49static __net_exit void sunrpc_exit_net(struct net *net)
  50{
  51        ip_map_cache_destroy(net);
  52        rpc_proc_exit(net);
  53}
  54
  55static 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
  62extern struct cache_detail unix_gid_cache;
  63
  64extern void cleanup_rpcb_clnt(void);
  65
  66static int __init
  67init_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
  92out4:
  93        rpcauth_remove_module();
  94out3:
  95        rpc_destroy_mempool();
  96out2:
  97        unregister_rpc_pipefs();
  98out:
  99        return err;
 100}
 101
 102static void __exit
 103cleanup_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}
 118MODULE_LICENSE("GPL");
 119fs_initcall(init_sunrpc); /* Ensure we're initialised before nfs */
 120module_exit(cleanup_sunrpc);
 121