Kernel
創建用於讀取/寫入 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))
如果有人可以幫助我清除此錯誤,那就太好了。提前致謝 :)
返回值從2b07021a940ce1cdec736ec0cacad6af77717afc
debugfs_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