创建用于读取/写入 u32 值的 debugfs 文件

创建用于读取/写入 u32 值的 debugfs 文件

我正在尝试创建具有以下规格的文件。

debugfs 子目录中的文件“myfile”是只读由任何用户读取,并且在读取时应返回 jiffies 内核计时器的当前值。

my_init我在直接调用的函数中编写了以下一行代码module_init(my_init)

if (!debugfs_create_u32("myfile", 0444, handle, (u32*)&myfile))
        goto fail;

运行时make,我收到以下错误。

error: invalid use of void expression
  if (!debugfs_create_u32("myfile", 0444, handle, (u32*)&myfile))

如果有人能帮助我清除这个错误,那就太好了。提前致谢 :)

答案1

返回值已从debugfs_create_u32at中删除2b07021a940ce1cdec736ec0cacad6af77717afc进入 v5.7:

debugfs: 删除 debugfs_create_u32() 的返回值 没有人检查 debugfs_create_u32() 的返回值,因为不需要它,因此将返回值设置为 void,以便将来没有人尝试这样做。

所以你可以摆脱它if

对我来说问题是我想在模块卸载后删除 debugfs 文件,并且我的条目位于 debugfs 顶层且为 NULL,所以我不能只是debugfs_remove_recursive.

所以我想我会得到 dentry:

debugfs_lookup("basename", NULL)

也许我们不应该在顶层创建 debugfs 条目,因为如果有多个条目,它会过多地污染命名空间。

然而,一些非常相似的调用仍然返回文件,这有点不一致,例如:

struct dentry *debugfs_create_ulong

所以我认为这只是一个 API 错误。难道内核开发者不像我曾经想象的那样是完美的上帝吗? :-O

相关内容