Create_proc_entry()関数を使用して/ procの下にディレクトリを作成しようとしています。コードをコンパイルしようとすると、次のエラーが発生します:関数 'create_proc_entry'の暗黙の宣言。
これらは、.cファイルに含めたヘッダーです。
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/vmalloc.h>
#include <linux/uaccess.h>
コンパイルしようとしているマシンのカーネルバージョンは、3.10.33-g7954807-dirtyです。
このメソッドを呼び出すために必要なヘッダーがありませんか?または、私のバージョンのカーネルではこのメソッドは廃止されていますか?
/ procファイルシステムは3.10でリファクタリングされ、探している関数は削除されました。フル機能のproc_create
関数ファミリーを使用する必要があります。署名が異なることに注意してください。
3.10バージョン: http://lxr.free-electrons.com/source/include/linux/proc_fs.h?v=3.1
3.9バージョン: http://lxr.free-electrons.com/source/include/linux/proc_fs.h?v=3.9
フル機能の/ proc関数の使用に関する詳細な説明は、書籍Linux Device Drivers 4で見つけることができます。短い解決策が必要な場合は、このリンク( https://github.com/jesstess/ldd4/blob/ master/scull/main.c )ここで、struct file_operations
の使用方法を確認できます。構造体のすべてのフィールドに設定する必要はありません。