私は Linux カーネル モジュールを作成していますが、proc ファイルを動的に生成し、それらを適切な方法で使用する方法があるかどうか疑問に思っていました。
a を使用して構造体を作成し、list_head
そこから進むことに問題はありませんが、私の究極の問題は、まったく同じ関数を異なる変数で実行したいということです。つまり、write_proc
ファイルごとにカーネルメモリ内の異なるバッファーに書き込む (およびread_proc
同じファイルから読み取る) が必要なだけです。
私がこれに苦労している理由は、procファイルから読み書きするための関数プロトタイプがこの動作を許可していないようだからです:
int read_proc(char *buf, char **start, off_t offset, int count,
int *eof, void *data) {
int write_proc(struct file *file, const char *buf,
unsigned long count, void *data) {
これで、一連の関数を静的に作成し、十分に割り当てることができるようになりましたが、もっと洗練された解決策があるかどうか疑問に思っています。
ユーザーランドでどのように表示するかの例を次に示します (どこから始めればよいかわからないため、コード MWE はありません)。
$ echo "file1" > /proc/mydir/create
$ echo "file2" > /proc/mydir/create
$ ls /proc/mydir
create file1 file2
$ echo "1" > /proc/mydir/file1
$ echo "5" > /proc/mydir/file2
$ cat /proc/mydir/file*
1
5
私はちょうど深いところから抜け出しましたか?
私は非常に一般的な互換性を探しています (2.6.33+)