У меня большие данные в ядре (1 ГБ +), я хочу скопировать их пользователю по частям.
int i=0;
while (myBuffer) {
copy_to_user(userBuffer + 64*i, (void *) myBuffer, 64)
myBuffer = newData();
i++;
}
как я могу сделать (+ 64 * i) в режиме ядра. Это законно? Я имею в виду, что когда я посылаю бафф от пользователя к ядру, ядро хочет заполнить его данными, используя '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);
пользователь ожидает печати: Как это возможно
? это не та же самая память ...