LDD3的scullp模块问题

发布于 2022-09-23 13:50:07 字数 947 浏览 14 评论 0

只是在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

心凉怎暖 2022-09-30 13:50:07

cat 实际上是调用的read系统调用,他会多次调用read去读取数据,如果第一次读取成功的话,还会调用一次。

久而酒知 2022-09-30 13:50:07

你直接写一个read程序去读,就不会出现这样的情况了

☆獨立☆ 2022-09-30 13:50:07

但是:
abc.c文件14407字符,
cat abc.c > /dev/scullp0
cat /proc/scullpmem
dmesg|grep scullp................................也是显示两次read,每次count=1024

无声情话 2022-09-30 13:50:07

原帖由 whoisliang 于 2008-12-30 11:59 发表
但是:
abc.c文件14407字符,
cat abc.c > /dev/scullp0
cat /proc/scullpmem
dmesg|grep scullp................................也是显示两次read,每次count=1024

是的,shell指令都是这样的情况,以前我们遇到过

云巢 2022-09-30 13:50:07

那就有一个问题了:

shell的系统调用怎么知道数据读完了?
14407字符只是两次1024是读不完的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文