Chinaunix
标题:
(已解决)求教大牛,一个诡异的关于“No such device or address"的错误?
[打印本页]
作者:
g84ch
时间:
2009-08-24 23:40
标题:
(已解决)求教大牛,一个诡异的关于“No such device or address"的错误?
最近测试了书上的一个例子(程序代码见附件),编译通过,insmod的后用如下方式测试出错。
root@ubuntu# echo '12345' > /dev/globalmem
root@ubuntu# cat /dev/globalmem
12345
cat: /dev/globalmem: No such device or address
测试平台是ubuntu8.04,内核2.6.24
问题:能够输出写入的内容,但是为什么会报错呢?望大牛指点。先谢谢了~~~
globalmem.rar
(1.87 KB, 下载次数: 45)
2009-08-24 23:40 上传
点击文件名下载附件
这个问题我已经找到了,首先cat命令read设备内容,当返回值是大于0的时候,cat会继续在open设备,然后进行read操作(每次读4096字节)。程序例子中第一次读4096个字节后,返回值4096,指针偏移也增加了4096,代码如下:
*ppos += count;----》值为4096
ret = count;
返回之后,cat又再一次open设备,然后读设备,这是后read的参数发生变化了,具体注解如下:
static ssize_t globalmem_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos)
{
unsigned long p = *ppos;//这里的*ppos=4096,第一次是0
unsigned int count = size;//这里的size=4096。
int ret = 0;
struct globalmem_dev *dev = filp->private_data;
if(p >= GLOBALMEM_SIZE) //条件满足,返回-ENXIO,
return count ? -ENXIO:0;
。。。。。。。。。
当返回值是-ENXIO时,就会报错。cat: /dev/globalmem: No such device or address
[
本帖最后由 g84ch 于 2009-8-25 21:59 编辑
]
作者:
unixlinuxsys
时间:
2009-08-25 08:33
[root@ThinkPad ~]# touch /dev/abc/abc
[root@ThinkPad abc]# echo '12345'> /dev/abc/abc
[root@ThinkPad abc]# less abc
作者:
g84ch
时间:
2009-08-25 21:54
标题:
回复 #2 unixlinuxsys 的帖子
这位大哥,我实在不明白,你这几行命令是啥意思。。。望赐教~~~
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2