“Linux内核模块编程指南”的procfs1.c

时间:2012-11-01 16:04:38

标签: linux module kernel

我正在讨论"The Linux Kernel Module Programming Guide"第5.1章中的例子。我编译了源代码,加载了模块,然后当我做cat /proc/helloworld时,我注意到/var/log/messages中的以下内容:(我修改了原始源代码以打印ret的值和offset

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次。我不明白为什么它是3次而不是2次。第一次调用procfile_read时,它返回12,因此第二次调用回调函数,在此期间返回0。但为什么第三次被召唤?我认为0(第二次调用)的返回值表示系统调用read(以及procfile_read)将不再被调用。

请帮我理解这个问题。非常感谢!

0 个答案:

没有答案