cregit-Linux how code gets into the kernel

Release 4.14 net/9p/mod.c

Directory: net/9p
/*
 *  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
 *
 */


#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/module.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/moduleparam.h>
#include <net/9p/9p.h>
#include <linux/fs.h>
#include <linux/parser.h>
#include <net/9p/client.h>
#include <net/9p/transport.h>
#include <linux/list.h>
#include <linux/spinlock.h>

#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");


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); }

Contributors

PersonTokensPropCommitsCommitProp
Joe Perches99100.00%1100.00%
Total99100.00%1100.00%

EXPORT_SYMBOL(_p9_debug); #endif /* * Dynamic Transport Registration Routines * */ static DEFINE_SPINLOCK(v9fs_trans_lock); static LIST_HEAD(v9fs_trans_list); /** * v9fs_register_trans - register a new transport with 9p * @m: structure describing the transport module and entry points * */
void v9fs_register_trans(struct p9_trans_module *m) { spin_lock(&v9fs_trans_lock); list_add_tail(&m->list, &v9fs_trans_list); spin_unlock(&v9fs_trans_lock); }

Contributors

PersonTokensPropCommitsCommitProp
Eric Van Hensbergen2266.67%150.00%
Tejun Heo1133.33%150.00%
Total33100.00%2100.00%

EXPORT_SYMBOL(v9fs_register_trans); /** * 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); }

Contributors

PersonTokensPropCommitsCommitProp
Tejun Heo30100.00%1100.00%
Total30100.00%1100.00%

EXPORT_SYMBOL(v9fs_unregister_trans); /** * v9fs_get_trans_by_name - get transport with the matching name * @name: string identifying transport * */
struct p9_trans_module *v9fs_get_trans_by_name(char *s) { struct p9_trans_module *t, *found = NULL; spin_lock(&v9fs_trans_lock); list_for_each_entry(t, &v9fs_trans_list, list) if (strcmp(t->name, s) == 0 && try_module_get(t->owner)) { found = t; break; } spin_unlock(&v9fs_trans_lock); return found; }

Contributors

PersonTokensPropCommitsCommitProp
Eric Van Hensbergen3346.48%125.00%
Tejun Heo3143.66%125.00%
Prem Karat45.63%125.00%
Latchesar Ionkov34.23%125.00%
Total71100.00%4100.00%

EXPORT_SYMBOL(v9fs_get_trans_by_name); /** * v9fs_get_default_trans - get the default transport * */
struct p9_trans_module *v9fs_get_default_trans(void) { 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; }

Contributors

PersonTokensPropCommitsCommitProp
Tejun Heo6975.82%150.00%
Eric Van Hensbergen2224.18%150.00%
Total91100.00%2100.00%

EXPORT_SYMBOL(v9fs_get_default_trans); /** * v9fs_put_trans - put trans * @m: transport to put * */
void v9fs_put_trans(struct p9_trans_module *m) { if (m) module_put(m->owner); }

Contributors

PersonTokensPropCommitsCommitProp
Tejun Heo21100.00%1100.00%
Total21100.00%1100.00%

/** * init_p9 - Initialize module * */
static int __init init_p9(void) { int ret = 0; p9_error_init(); pr_info("Installing 9P2000 support\n"); p9_trans_fd_init(); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Latchesar Ionkov2278.57%125.00%
Eric Van Hensbergen517.86%250.00%
Joe Perches13.57%125.00%
Total28100.00%4100.00%

/** * exit_p9 - shutdown module * */
static void __exit exit_p9(void) { pr_info("Unloading 9P2000 support\n"); p9_trans_fd_exit(); }

Contributors

PersonTokensPropCommitsCommitProp
Latchesar Ionkov1058.82%125.00%
Eric Van Hensbergen317.65%125.00%
Tejun Heo317.65%125.00%
Joe Perches15.88%125.00%
Total17100.00%4100.00%

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");

Overall Contributors

PersonTokensPropCommitsCommitProp
Tejun Heo18634.51%19.09%
Eric Van Hensbergen12022.26%545.45%
Joe Perches11922.08%19.09%
Latchesar Ionkov10820.04%218.18%
Prem Karat40.74%19.09%
Rob Landley20.37%19.09%
Total539100.00%11100.00%
Directory: net/9p
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.