LDD3的scullp模块问题
只是在scullp_read_procmem(char* buf,char** start,off_t offset,int count,int* eof,void* data) 函数中最后return len前加了一句:printk(KERN_ALERT "scullp:count=%i\n",count);
以DEBUG模式make之后,再执行scullp_load,然后:
[root@kal root]# echo -n "abcde" > /dev/scullp0
[root@kal root]# cat /proc/scullpmem
Device 0: qset 500, order 0, sz 5
item at c9331200, qset at c5123000
0:c0aea000
Device 1: qset 500, order 0, sz 0
item at c9331274, qset at 00000000
Device 2: qset 500, order 0, sz 0
item at c93312e8, qset at 00000000
Device 3: qset 500, order 0, sz 0
item at c933135c, qset at 00000000
[root@kal root]# dmesg |grep scullp
scullp:count=1024
scullp:count=1024
为什么执行scullp_read_procmem两次(只不过5个字符而已),而且每次count还1024
向各位请教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
cat 实际上是调用的read系统调用,他会多次调用read去读取数据,如果第一次读取成功的话,还会调用一次。
你直接写一个read程序去读,就不会出现这样的情况了
但是:
abc.c文件14407字符,
cat abc.c > /dev/scullp0
cat /proc/scullpmem
dmesg|grep scullp................................也是显示两次read,每次count=1024
是的,shell指令都是这样的情况,以前我们遇到过
那就有一个问题了:
shell的系统调用怎么知道数据读完了?
14407字符只是两次1024是读不完的