В пользовательском пространстве программы я выделить часть памяти через ттар как следующий вызов функции:copy_to_user не может скопировать данные пользователю mmap из ядра?
void *memory;
int fd;
fd = open(filepath, O_RDWR);
if (fd < 0)
return errno;
memory = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED, fd, 0);
if (memory == MAP_FAILED)
return -1;
//syscall() goes here
В пространстве ядра в моей системе вызова я пытаюсь скопировать данные в отображенной области памяти следующим образом:
copy_to_user(memory,src,4096);
EDIT: добавлена ошибка проверки кода на пост разъяснений copy_to_user()
вызова неоднократно неудачу в этом случае, в то время как если бы я сделал memory = malloc()
он всегда последующий.
Я получаю неправильные флаги в этом случае для mmap?
Какая ошибка? Используете ли вы [perror()] (http://man7.org/linux/man-pages/man3/perror.3.html)? Мы не можем вам помочь только с тем, что вы на самом деле пишете. – Stargateur
copy_to_user() в пространстве ядра не устанавливает 'errno', который можно предсказать через' perror() ' – bawejakunal