|
编写一个内核模块时需要与用户空间通信,使用procfs,但在读函数中使用copy_to_user将数据复制到用户空间时出错,测试代码如下:
static int __init module_init(void)
{
//....
hw_buffer = vmalloc(MAX_BUFFER_SIZE);
//....
}
static int module_proc_read(char *page, char **start, off_t off, int count, int *eof, void *data )
{
int err;
if((err = copy_to_user(page, hw_buffer, count)))
{
printk("ret=%d, count=%d\n", err, count);
return 0;
}
return count;
}
其中hw_buffer是由vmalloc在init函数中分配的,已经成功分配。但copy_to_user总是返回1024,和请求的数量count一样,即一个字节的数据也没复制成功,但使用memcpy就可以成功复制,希望高手帮忙指导一下。
内核版本是Fedora7的最新版本 2.6.22.1-41.fc7 |
|