gpt4 book ai didi

linux - 使用 dentry inode 创建的文件与打开的系统调用 inode 之间的关系?

转载 作者:太空宇宙 更新时间:2023-11-04 10:50:03 29 4
gpt4 key购买 nike

我正在创建一个简单的 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_flagsinit并检查其在 open 中的值但它们不匹配。

最佳答案

在你的代码中你有两个dentry。在 /sys/kernel/debug/

中创建目录的一个
pDebugfs = debugfs_create_dir(name, NULL);

并且,您没有存储它,但它就在那里,创建您打开(2)的文件:

pDebugfs_file = debugfs_create_file("testFile", MODE_T, pDebugfs, NULL,  &debugfs_fops)

您在 debugfs_open 中看到的 inode 是与文件关联的那个而不是目录。

关于linux - 使用 dentry inode 创建的文件与打开的系统调用 inode 之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31343335/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com