我在内核中有一个大数据(1GB+),我想将它分块复制给用户。
int i=0;
while (myBuffer) {
copy_to_user(userBuffer + 64*i, (void *) myBuffer, 64)
myBuffer = newData();
i++;
}
如何在内核模式下执行 (+ 64*i) .. 是否合法?我的意思是,当我从用户向内核发送 buff 时,内核希望使用 'copy_to_user' 用数据填充它,但内核会多次使用 'copy_to_user' 到同一个 userBuff,每次到它的不同位置。示例:回调:
getMyData(char* userBuff){
copy_to_user(userBuff, 'H', 1);
copy_to_user(userBuff+1, 'o', 1);
copy_to_user(userBuff+2, 'w', 1);
copy_to_user(userBuff+3, ' ', 1);
copy_to_user(userBuff+4, 'a', 1);
copy_to_user(userBuff+5, 'r', 1);
copy_to_user(userBuff+6, 'e', 1);
}
用户调用:
getMydata(myBuff);
print("%s",myBuff);
用户期望打印:How are
可能吗?不是同一个记忆...