static ssize_t device_read (struct file* filp, char *bufStoreData, size_t bufCount, loff_t* curOffset)
{
printk(KERN_INFO"reading from the device");
ret = copy_to_user(bufStoreData,virtual_device.data,bufCount);
return ret;
}
static ssize_t device_write(struct file *filp,const char* bufSourceData,size_t bufCount, loff_t* curOffset)
{
printk(KERN_INFO"writing to device");
ret=copy_from_user(virtual_device.data,bufSourceData,bufCount);
return ret;
}
我使用echo和cat命令来进行用户写入和读取,但我没有正确读取数据。也许我没有回归正确的价值观。是这样的吗?
答案 0 :(得分:1)
device_read()
和device_write()
返回值是读/写字节数。如果复制了所有字节,则copy_to_user()
和copy_from_user()
返回0
,否则不会复制字节数。
可能你的操作成功了,你正在返回0
,这意味着“复制了0个字节”。
成功时必须返回bufCount
,失败时必须返回否定错误代码。
ret=copy_from_user(virtual_device.data,bufSourceData,bufCount);
if (ret)
return ret;
return bufCount;