危机处理案例分析:Linux Debugfs文件系统介绍

来源:百度文库 编辑:偶看新闻 时间:2024/04/26 14:09:19

Linux Debugfs文件系统介绍及使用

注意:PERF_DEBUGFS_DIR          mount -t debugfs none  ${PERF_DEBUGFS_DIR}          kernel support:   CONFIG_DEBUG_FS    CONFIG_VIRQ_DEBUG          cat virq_mapping 1 Debugfs简介

Debugfs文件系统目的是为开发人员提供更多内核数据,方便调试内容. 我们知道/proc文件系统关注的是进程信息,/sysfs关注是one-value-per-file策略集,而Debugfs文件系统没有如此多限制,可是任何内核要输出的信息。

2 Debugfs使用

2.1 安装文件系统

Debugfs没有物理设备,其挂载方式:
mount -t debugfs none /sys/kernel/debug

2.2 编程使用

2.2.1 要使用Debugfs的模块需要包含

2.2.2 具体步骤

a 创建目录。所有该模块输出的信息都在该目录下面。

struct dentry *debugfs_create_dir(const char *name, struct dentry *parent);

b 创建文件。在上面创建的目录下面创建文件。

struct dentry *debugfs_create_file(const char *name, mode_t mode, struct dentry *parent, void *data,
const struct file_operations *fops);
通过fops操作文件的读写等请求,文件一般用来传递字符创等信息。
c 对于数字情况下,就没有必须通过文件来传递信息了。Debugfs提供了针对数字的接口:

struct dentry *debugfs_create_u8(const char *name, mode_t mode, struct dentry *parent, u8 *value);
struct dentry *debugfs_create_u16(const char *name, mode_t mode, struct dentry *parent, u16 *value);
struct dentry *debugfs_create_u32(const char *name, mode_t mode, struct dentry *parent, u32 *value);
struct dentry *debugfs_create_u64(const char *name, mode_t mode, struct dentry *parent, u64 *value);
struct dentry *debugfs_create_bool(const char *name, mode_t mode, struct dentry *parent, u32 *value);
struct dentry *debugfs_create_blob(const char *name, mode_t mode, struct dentry *parent,
struct debugfs_blob_wrapper *blob);

d 模块卸载,需要主动删除目录下的文件。
void debugfs_remove_recursive(struct dentry *dentry);