Kernel

創建用於讀取/寫入 u32 值的 debugfs 文件

  • November 24, 2020

我正在嘗試創建具有以下規格的文件。

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))

如果有人可以幫助我清除此錯誤,那就太好了。提前致謝 :)

返回值從2b07021a940ce1cdec736ec0cacad6af77717afcdebugfs_create_u32中刪除,進入 v5.7:

debugfs: remove return value of 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

引用自:https://unix.stackexchange.com/questions/593983