Blame view
net/9p/mod.c
4.27 KB
bd238fb43 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 |
/* * 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 * */ |
5d3851530 9p: Reduce object... |
26 |
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
bd238fb43 9p: Reorganizatio... |
27 |
#include <linux/module.h> |
5d3851530 9p: Reduce object... |
28 29 |
#include <linux/errno.h> #include <linux/sched.h> |
bd238fb43 9p: Reorganizatio... |
30 31 |
#include <linux/moduleparam.h> #include <net/9p/9p.h> |
fb0466c3a 9p: fix bad kconf... |
32 33 |
#include <linux/fs.h> #include <linux/parser.h> |
8b81ef589 9p: consolidate t... |
34 |
#include <net/9p/client.h> |
fb0466c3a 9p: fix bad kconf... |
35 36 |
#include <net/9p/transport.h> #include <linux/list.h> |
72029fe85 9p: implement pro... |
37 |
#include <linux/spinlock.h> |
bd238fb43 9p: Reorganizatio... |
38 39 40 41 42 43 |
#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"); |
5d3851530 9p: Reduce object... |
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
void _p9_debug(enum p9_debug_flags level, const char *func, const char *fmt, ...) { struct va_format vaf; va_list args; if ((p9_debug_level & level) != level) return; va_start(args, fmt); vaf.fmt = fmt; vaf.va = &args; if (level == P9_DEBUG_9P) pr_notice("(%8.8d) %pV", task_pid_nr(current), &vaf); else pr_notice("-- %s (%d): %pV", func, task_pid_nr(current), &vaf); va_end(args); } EXPORT_SYMBOL(_p9_debug); |
bd238fb43 9p: Reorganizatio... |
67 |
#endif |
fb0466c3a 9p: fix bad kconf... |
68 69 70 71 |
/* * Dynamic Transport Registration Routines * */ |
72029fe85 9p: implement pro... |
72 |
static DEFINE_SPINLOCK(v9fs_trans_lock); |
fb0466c3a 9p: fix bad kconf... |
73 |
static LIST_HEAD(v9fs_trans_list); |
fb0466c3a 9p: fix bad kconf... |
74 75 76 |
/** * v9fs_register_trans - register a new transport with 9p |
ee443996a 9p: Documentation... |
77 |
* @m: structure describing the transport module and entry points |
fb0466c3a 9p: fix bad kconf... |
78 79 80 81 |
* */ void v9fs_register_trans(struct p9_trans_module *m) { |
72029fe85 9p: implement pro... |
82 |
spin_lock(&v9fs_trans_lock); |
fb0466c3a 9p: fix bad kconf... |
83 |
list_add_tail(&m->list, &v9fs_trans_list); |
72029fe85 9p: implement pro... |
84 |
spin_unlock(&v9fs_trans_lock); |
fb0466c3a 9p: fix bad kconf... |
85 86 87 88 |
} EXPORT_SYMBOL(v9fs_register_trans); /** |
72029fe85 9p: implement pro... |
89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
* v9fs_unregister_trans - unregister a 9p transport * @m: the transport to remove * */ void v9fs_unregister_trans(struct p9_trans_module *m) { spin_lock(&v9fs_trans_lock); list_del_init(&m->list); spin_unlock(&v9fs_trans_lock); } EXPORT_SYMBOL(v9fs_unregister_trans); /** * v9fs_get_trans_by_name - get transport with the matching name |
ee443996a 9p: Documentation... |
103 |
* @name: string identifying transport |
fb0466c3a 9p: fix bad kconf... |
104 105 |
* */ |
4d63055fa fs/9p: Clean-up g... |
106 |
struct p9_trans_module *v9fs_get_trans_by_name(char *s) |
fb0466c3a 9p: fix bad kconf... |
107 |
{ |
72029fe85 9p: implement pro... |
108 109 110 111 112 |
struct p9_trans_module *t, *found = NULL; spin_lock(&v9fs_trans_lock); list_for_each_entry(t, &v9fs_trans_list, list) |
4d63055fa fs/9p: Clean-up g... |
113 |
if (strcmp(t->name, s) == 0 && |
72029fe85 9p: implement pro... |
114 115 116 117 118 119 120 |
try_module_get(t->owner)) { found = t; break; } spin_unlock(&v9fs_trans_lock); return found; |
fb0466c3a 9p: fix bad kconf... |
121 |
} |
72029fe85 9p: implement pro... |
122 |
EXPORT_SYMBOL(v9fs_get_trans_by_name); |
fb0466c3a 9p: fix bad kconf... |
123 124 |
/** |
72029fe85 9p: implement pro... |
125 |
* v9fs_get_default_trans - get the default transport |
fb0466c3a 9p: fix bad kconf... |
126 127 |
* */ |
72029fe85 9p: implement pro... |
128 |
struct p9_trans_module *v9fs_get_default_trans(void) |
fb0466c3a 9p: fix bad kconf... |
129 |
{ |
72029fe85 9p: implement pro... |
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
struct p9_trans_module *t, *found = NULL; spin_lock(&v9fs_trans_lock); list_for_each_entry(t, &v9fs_trans_list, list) if (t->def && try_module_get(t->owner)) { found = t; break; } if (!found) list_for_each_entry(t, &v9fs_trans_list, list) if (try_module_get(t->owner)) { found = t; break; } spin_unlock(&v9fs_trans_lock); return found; |
fb0466c3a 9p: fix bad kconf... |
149 |
} |
72029fe85 9p: implement pro... |
150 |
EXPORT_SYMBOL(v9fs_get_default_trans); |
fb0466c3a 9p: fix bad kconf... |
151 |
|
72029fe85 9p: implement pro... |
152 153 154 155 156 157 158 159 160 161 |
/** * v9fs_put_trans - put trans * @m: transport to put * */ void v9fs_put_trans(struct p9_trans_module *m) { if (m) module_put(m->owner); } |
fb0466c3a 9p: fix bad kconf... |
162 |
|
bd238fb43 9p: Reorganizatio... |
163 |
/** |
961a5a502 net/9p: Change li... |
164 |
* init_p9 - Initialize module |
bd238fb43 9p: Reorganizatio... |
165 166 167 168 |
* */ static int __init init_p9(void) { |
8a0dc95fd 9p: transport API... |
169 |
int ret = 0; |
bd238fb43 9p: Reorganizatio... |
170 171 |
p9_error_init(); |
5d3851530 9p: Reduce object... |
172 173 |
pr_info("Installing 9P2000 support "); |
887b3ece6 9p: fix error pat... |
174 |
p9_trans_fd_init(); |
bd238fb43 9p: Reorganizatio... |
175 |
|
bd238fb43 9p: Reorganizatio... |
176 177 178 179 |
return ret; } /** |
961a5a502 net/9p: Change li... |
180 |
* exit_p9 - shutdown module |
bd238fb43 9p: Reorganizatio... |
181 182 183 184 185 |
* */ static void __exit exit_p9(void) { |
5d3851530 9p: Reduce object... |
186 187 |
pr_info("Unloading 9P2000 support "); |
72029fe85 9p: implement pro... |
188 189 |
p9_trans_fd_exit(); |
bd238fb43 9p: Reorganizatio... |
190 191 192 193 194 195 196 197 198 |
} 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"); |