0

我在内核中有一个大数据(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

可能吗?不是同一个记忆...

4

0 回答 0