debugfs

linux kernel debugfs API,可以帮助linux驱动工程师快速调试某个外设驱动,在应用层通过cat/echo命令修改内核层数据,目录位于/sys/kernel/debug/

1. linux内核层

1.1 头文件

#include <linux/debugfs.h>

1.2 创建目录、文件

struct dentry *dir;

const struct file_operations fops = {
    .read    = debugfs_read,
    .write   = debugfs_write,
};

/* 
 * "dir":目录名字
 * NULL :在/sys/kernel/debug创建目录
 * 即 /sys/kernel/debug/dir/
 */
dir = debugfs_create_dir("dir", NULL);

/* 
 * "data":文件名字
 * 0644  :文件权限
 * dir   :父目录
 * &fops:文件对应的操作函数
 * 即 /sys/kernel/debug/dir/data
 */
debugfs_create_file("data", 0644, dir, NULL, &fops);

1.3 删除目录、文件

1.4 编写read/write函数

注意:在debugfs_read()函数,不能用copy_to_user()函数,必须用simple_read_from_buffer()函数,具体原因,请看《使用cat读取和echo写内核文件节点的一些问题》

2. linux应用层

Last updated

Was this helpful?