2

copy_to_userカーネルが procfs を介してユーザーに書き込む場合、私は常に必要だと考えていました。

私は一度それをするのを忘れましたが(そして私は使用snprintfしました)、すべてがうまくいきました。今気づいたので検索してみました。他のセクション(ユーザーからのカーネルの読み取り)では必要であるとは言っても、必要とは言わないこのリンクを見つけました。copy_to_usercopy_from_user

それで、データを書き込む(ユーザーがそこから読み取る)ためにカーネルモジュールに提供されるバッファは、すでにカーネルスペースにありますか?copy_to_userprocfs を介して書き込むときに必要ないというのは本当ですか? それとも、クラッシュしなかったのは幸運でしたか?

4

1 に答える 1

2

ユーザー空間ポインタを扱うときは、常にcopy_from_userandを使用してください。copy_to_userシンプルなmemcpy場合でも、うまくいかない場合があります。情報については、このスレッドを参照してください。

それについて言えばprocfs、カーネル メモリの事前割り当てでちょっとしたトリックを使用することを考慮する必要があります。詳細については、このリンクを参照してください。

于 2012-04-03T11:49:21.453 に答える