次の仕様でファイルを作成しようとしています。
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_u32
がから削除されました。2b07021a940ce1cdec736ec0cacad6af77717afcv5.7入力:
debugfs: debugfs_create_u32() の戻り値を削除します。 debugfs_create_u32() の戻り値は必要ないため、誰も確認しないので、今後は誰もこれを試みないように戻り値を void に設定します。
だからあなたはそれを削除することができますif
。
私にとって問題は、モジュールがアンロードされた後にdebugfsファイルを削除したいのですが、私のエントリはdebugfsの最上位レベルにあり、NULLなので、ただできないということですdebugfs_remove_recursive
。
だから私は歯科治療を受けると思いました。
debugfs_lookup("basename", NULL)
複数のエントリがある場合は、名前空間が汚染されすぎるため、最上位レベルでdebugfsエントリを作成しないでください。
しかし、いくつかの非常に似た呼び出しは、まだ一貫性のないファイルを返します。たとえば、次のようになります。
struct dentry *debugfs_create_ulong
だから私はこれが単にAPIのバグだと思います。カーネル開発者は私がかつて考えていた完璧な神ではありませんか? :-永久