使用 dentry inode 创建的文件与打开的系统调用 inode 之间的关系?
Relationship between file created with dentry inode and open syscall inode?
我正在使用以下代码在 /sys/kernel/debug/test/testFile
中创建一个简单的 debugfs
文件:
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)
现在 dentry
类型的 pDebugfs
有一个指向名为 d_inode
的 inode
的指针,定义为 here。
我的问题是这个inode
指针和open
中调用的指针有什么关系?他们有关系吗?如果是,如何?我尝试在 i_node
定义中打印 i_flags
值,但它们不匹配,我在 init
中分配 i_flags
并检查其在 [=14= 中的值] 但他们不匹配。
在您的代码中有两个 dentry
。在 /sys/kernel/debug/
中创建目录的一个
pDebugfs = debugfs_create_dir(name, NULL);
而且,你没有存储它,但它在那里,一个创建文件的人 open(2)
:
pDebugfs_file = debugfs_create_file("testFile", MODE_T, pDebugfs, NULL, &debugfs_fops)
您在 debugfs_open
中看到的 inode
是与文件关联的那个
而不是目录。
我正在使用以下代码在 /sys/kernel/debug/test/testFile
中创建一个简单的 debugfs
文件:
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)
现在 dentry
类型的 pDebugfs
有一个指向名为 d_inode
的 inode
的指针,定义为 here。
我的问题是这个inode
指针和open
中调用的指针有什么关系?他们有关系吗?如果是,如何?我尝试在 i_node
定义中打印 i_flags
值,但它们不匹配,我在 init
中分配 i_flags
并检查其在 [=14= 中的值] 但他们不匹配。
在您的代码中有两个 dentry
。在 /sys/kernel/debug/
pDebugfs = debugfs_create_dir(name, NULL);
而且,你没有存储它,但它在那里,一个创建文件的人 open(2)
:
pDebugfs_file = debugfs_create_file("testFile", MODE_T, pDebugfs, NULL, &debugfs_fops)
您在 debugfs_open
中看到的 inode
是与文件关联的那个
而不是目录。