diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-01-11 03:41:39 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-01-11 03:41:39 +0100 | 
| commit | abede81c4fb2e3b85d8760f25e3da39d2c69a134 (patch) | |
| tree | 26c893ec108d837eb9171d678c55a1cea7b22af4 /net/wimax/debugfs.c | |
| parent | c9d557c19f94df42db78d4a5de4d25feee694bad (diff) | |
| parent | c59765042f53a79a7a65585042ff463b69cb248c (diff) | |
Merge commit 'v2.6.29-rc1' into core/urgent
Diffstat (limited to 'net/wimax/debugfs.c')
| -rw-r--r-- | net/wimax/debugfs.c | 90 | 
1 files changed, 90 insertions, 0 deletions
diff --git a/net/wimax/debugfs.c b/net/wimax/debugfs.c new file mode 100644 index 000000000000..87cf4430079c --- /dev/null +++ b/net/wimax/debugfs.c @@ -0,0 +1,90 @@ +/* + * Linux WiMAX + * Debugfs support + * + * + * Copyright (C) 2005-2006 Intel Corporation <linux-wimax@intel.com> + * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> + * + * 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 the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ +#include <linux/debugfs.h> +#include <linux/wimax.h> +#include "wimax-internal.h" + +#define D_SUBMODULE debugfs +#include "debug-levels.h" + + +/* Debug framework control of debug levels */ +struct d_level D_LEVEL[] = { +	D_SUBMODULE_DEFINE(debugfs), +	D_SUBMODULE_DEFINE(id_table), +	D_SUBMODULE_DEFINE(op_msg), +	D_SUBMODULE_DEFINE(op_reset), +	D_SUBMODULE_DEFINE(op_rfkill), +	D_SUBMODULE_DEFINE(stack), +}; +size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL); + +#define __debugfs_register(prefix, name, parent)			\ +do {									\ +	result = d_level_register_debugfs(prefix, name, parent);	\ +	if (result < 0)							\ +		goto error;						\ +} while (0) + + +int wimax_debugfs_add(struct wimax_dev *wimax_dev) +{ +	int result; +	struct net_device *net_dev = wimax_dev->net_dev; +	struct device *dev = net_dev->dev.parent; +	struct dentry *dentry; +	char buf[128]; + +	snprintf(buf, sizeof(buf), "wimax:%s", net_dev->name); +	dentry = debugfs_create_dir(buf, NULL); +	result = PTR_ERR(dentry); +	if (IS_ERR(dentry)) { +		if (result == -ENODEV) +			result = 0;	/* No debugfs support */ +		else +			dev_err(dev, "Can't create debugfs dentry: %d\n", +				result); +		goto out; +	} +	wimax_dev->debugfs_dentry = dentry; +	__debugfs_register("wimax_dl_", debugfs, dentry); +	__debugfs_register("wimax_dl_", id_table, dentry); +	__debugfs_register("wimax_dl_", op_msg, dentry); +	__debugfs_register("wimax_dl_", op_reset, dentry); +	__debugfs_register("wimax_dl_", op_rfkill, dentry); +	__debugfs_register("wimax_dl_", stack, dentry); +	result = 0; +out: +	return result; + +error: +	debugfs_remove_recursive(wimax_dev->debugfs_dentry); +	return result; +} + +void wimax_debugfs_rm(struct wimax_dev *wimax_dev) +{ +	debugfs_remove_recursive(wimax_dev->debugfs_dentry); +} + +  | 
