编写linux内核模块时,我遇到了copy_to_user宏的问题。使用此代码:
int err;
struct myElement *el;
list_for_each(cursor,&headList){
el=list_entry(cursor,struct myElement,link);
printk("data ptr= %s, data len=%d\n",el->data,el->i);
err=copy_to_user(buforUz,el->data,el->i);
printk("err=%d\n",err);
}
当我使用剪切时,我可以使用dmesg检查printk是否显示正确的值(先前在已分配的备忘录中保存的字符串,指向存储字符串的内存的指针和字符串长度),但copy_to_user不复制任何内容。当我使用strace时,它显示它复制了0个字节:
read(3, "", 65536) = 0
可能导致此问题的原因是什么?
答案 0 :(得分:0)
我发现了这个问题。我的问题是我没有返回我读过的长度,但是0这是错误的,这就是为什么它没有显示任何内容。