私はループ内でcopy_to_user()
を使ってみました。カーネルプログラムでcopy_to_user()を使うには?
for_each_process(p) {
copy_to_user(buf, "data of p", len);
}
しかし、私が得た出力は異なります。これは、ユーザ空間内の最後のデータ行のみを有する。
#Data expected to copy to user space
123 1234 12 21
1243 124 423 12
1234 422 42 423
#Current Output:
1234 422 42 423
各行をカーネルスペースからユーザースペースにコピーするにはどうすればよいですか?
コードを表示してください。私たちをあなたが思っていることに導く代わりに(それは完全に間違っているかもしれません)、私たちにコードを示し、私たち自身の結論に至らせてください。是非、あなた自身の評価をしてください。また、調査して確認するデータ(コード)を教えてください。 – kaylum
"*私は、' copy_to_user() '*に渡されるデータがあると思っていました。いいえ、Linuxの 'copy_to_user(src、dst、len)'は、あなたが指している(ユーザプロセスのアドレス空間の)dstにデータをコピーします。同じポインタで複数回呼び出すと、その場所にある既存のデータを上書きします。 – dhke