1

「The Linux Kernel Module Programming Guide」の第 5.1 章の例をいじっていました。ソース コードをコンパイルし、モジュールをロードし、 を実行したときに、cat /proc/helloworldに次のことがわかりました/var/log/messagesretoffset

Oct 31 23:46:00 vm-ubuntu1010 kernel: [221941.287939] procfile_read (/proc/helloworld) called, ret=12, offset=0

Oct 31 23:46:00 vm-ubuntu1010 kernel: [221941.287955] procfile_read (/proc/helloworld) called, ret=0, offset=12

Oct 31 23:46:00 vm-ubuntu1010 kernel: [221941.287987] procfile_read (/proc/helloworld) called, ret=0, offset=12

ログ メッセージに基づいて、コールバック関数procfile_readが 3 回呼び出されました。私が理解していないのは、なぜ2回ではなく3回なのかということです。最初procfile_readに呼び出されると が返される12ため、コールバック関数は 2 回目に呼び出され、その間に0が返されます。しかし、なぜ 3 回目が呼び出されるのでしょうか。(2 回目の呼び出しの)の戻り値は0、システム コールread(したがってprocfile_read) が再び呼び出されないことを示していると思いました。

この問題を理解するのを手伝ってください。どうもありがとう!

4

0 に答える 0