我正在使用以下代码在debugfs
内创建一个简单的/sys/kernel/debug/test/testFile
文件:
pDebugfs = debugfs_create_dir(name, NULL);
if (!pDebugfs)
goto fail;
if (!debugfs_create_file("testFile", MODE_T, pDebugfs,
NULL, &debugfs_fops)) {
goto fail;
}
现在,当我写入此文件时,将调用具有以下定义的open
方法:
static ssize_t debugfs_open(struct inode *inode, struct file *filp)
现在pDebugfs
类型dentry
的指针指向inode
d_inode
定义here。
我的问题是这个inode
指针和open
中调用的指针之间的关系是什么?它们有关系吗?如果有,怎么样?我尝试在i_flags
两个定义中打印i_node
值,但它们不匹配,我在i_flags
中指定init
并在{{{}}中检查其值1}}但他们不匹配。
答案 0 :(得分:1)
在您的代码中,您有两个dentry
。一个在/sys/kernel/debug/
pDebugfs = debugfs_create_dir(name, NULL);
并且,你没有存储它,但它存在,创建你open(2)
文件的那个:
pDebugfs_file = debugfs_create_file("testFile", MODE_T, pDebugfs, NULL, &debugfs_fops)
您在inode
中看到的debugfs_open
是与该文件关联的{{1}}
而不是目录。