Blame view

net/9p/mod.c 3.09 KB
bd238fb43   Latchesar Ionkov   9p: Reorganizatio...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  /*
   *  net/9p/9p.c
   *
   *  9P entry point
   *
   *  Copyright (C) 2007 by Latchesar Ionkov <lucho@ionkov.net>
   *  Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com>
   *  Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov>
   *
   *  This program is free software; you can redistribute it and/or modify
   *  it under the terms of the GNU General Public License version 2
   *  as published by the Free Software Foundation.
   *
   *  This program is distributed in the hope that it will be useful,
   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   *  GNU General Public License for more details.
   *
   *  You should have received a copy of the GNU General Public License
   *  along with this program; if not, write to:
   *  Free Software Foundation
   *  51 Franklin Street, Fifth Floor
   *  Boston, MA  02111-1301  USA
   *
   */
  
  #include <linux/module.h>
  #include <linux/moduleparam.h>
  #include <net/9p/9p.h>
fb0466c3a   Eric Van Hensbergen   9p: fix bad kconf...
30
31
32
33
  #include <linux/fs.h>
  #include <linux/parser.h>
  #include <net/9p/transport.h>
  #include <linux/list.h>
bd238fb43   Latchesar Ionkov   9p: Reorganizatio...
34
35
36
37
38
39
40
  
  #ifdef CONFIG_NET_9P_DEBUG
  unsigned int p9_debug_level = 0;	/* feature-rific global debug level  */
  EXPORT_SYMBOL(p9_debug_level);
  module_param_named(debug, p9_debug_level, uint, 0);
  MODULE_PARM_DESC(debug, "9P debugging level");
  #endif
fb0466c3a   Eric Van Hensbergen   9p: fix bad kconf...
41
42
43
44
45
46
47
48
49
50
  /*
   * Dynamic Transport Registration Routines
   *
   */
  
  static LIST_HEAD(v9fs_trans_list);
  static struct p9_trans_module *v9fs_default_transport;
  
  /**
   * v9fs_register_trans - register a new transport with 9p
ee443996a   Eric Van Hensbergen   9p: Documentation...
51
   * @m: structure describing the transport module and entry points
fb0466c3a   Eric Van Hensbergen   9p: fix bad kconf...
52
53
54
55
56
57
58
59
60
61
62
63
   *
   */
  void v9fs_register_trans(struct p9_trans_module *m)
  {
  	list_add_tail(&m->list, &v9fs_trans_list);
  	if (m->def)
  		v9fs_default_transport = m;
  }
  EXPORT_SYMBOL(v9fs_register_trans);
  
  /**
   * v9fs_match_trans - match transport versus registered transports
ee443996a   Eric Van Hensbergen   9p: Documentation...
64
   * @name: string identifying transport
fb0466c3a   Eric Van Hensbergen   9p: fix bad kconf...
65
66
67
68
69
70
71
72
73
74
   *
   */
  struct p9_trans_module *v9fs_match_trans(const substring_t *name)
  {
  	struct list_head *p;
  	struct p9_trans_module *t = NULL;
  
  	list_for_each(p, &v9fs_trans_list) {
  		t = list_entry(p, struct p9_trans_module, list);
  		if (strncmp(t->name, name->from, name->to-name->from) == 0)
dd1a45841   Latchesar Ionkov   9p: return NULL w...
75
  			return t;
fb0466c3a   Eric Van Hensbergen   9p: fix bad kconf...
76
  	}
dd1a45841   Latchesar Ionkov   9p: return NULL w...
77
  	return NULL;
fb0466c3a   Eric Van Hensbergen   9p: fix bad kconf...
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  }
  EXPORT_SYMBOL(v9fs_match_trans);
  
  /**
   * v9fs_default_trans - returns pointer to default transport
   *
   */
  
  struct p9_trans_module *v9fs_default_trans(void)
  {
  	if (v9fs_default_transport)
  		return v9fs_default_transport;
  	else if (!list_empty(&v9fs_trans_list))
  		return list_first_entry(&v9fs_trans_list,
  					struct p9_trans_module, list);
  	else
  		return NULL;
  }
  EXPORT_SYMBOL(v9fs_default_trans);
bd238fb43   Latchesar Ionkov   9p: Reorganizatio...
97
98
99
100
101
102
  /**
   * v9fs_init - Initialize module
   *
   */
  static int __init init_p9(void)
  {
8a0dc95fd   Eric Van Hensbergen   9p: transport API...
103
  	int ret = 0;
bd238fb43   Latchesar Ionkov   9p: Reorganizatio...
104
105
106
107
  
  	p9_error_init();
  	printk(KERN_INFO "Installing 9P2000 support
  ");
887b3ece6   Eric Van Hensbergen   9p: fix error pat...
108
  	p9_trans_fd_init();
bd238fb43   Latchesar Ionkov   9p: Reorganizatio...
109

bd238fb43   Latchesar Ionkov   9p: Reorganizatio...
110
111
112
113
114
115
116
117
118
119
  	return ret;
  }
  
  /**
   * v9fs_init - shutdown module
   *
   */
  
  static void __exit exit_p9(void)
  {
8a0dc95fd   Eric Van Hensbergen   9p: transport API...
120
121
  	printk(KERN_INFO "Unloading 9P2000 support
  ");
bd238fb43   Latchesar Ionkov   9p: Reorganizatio...
122
123
124
125
126
127
128
129
130
  }
  
  module_init(init_p9)
  module_exit(exit_p9)
  
  MODULE_AUTHOR("Latchesar Ionkov <lucho@ionkov.net>");
  MODULE_AUTHOR("Eric Van Hensbergen <ericvh@gmail.com>");
  MODULE_AUTHOR("Ron Minnich <rminnich@lanl.gov>");
  MODULE_LICENSE("GPL");