Я собираюсь написать модуль ядра Linux для малины Pi. Все хорошо, за исключением того, что когда я пытаюсь использовать либо copy_to_user, либо put_user, он всегда возвращает значение «34336», если я печатаю его как llu, и если я печатаю его как символ, это ничего.Модуль ядра Linux copy_to_user не работает
Интересно, что он работал, я внес некоторые изменения, он прекратил работать, я вернулся к рабочей версии, и он больше не работает.
код из модуля:
ssize_t st_read(struct file *filp, char *buf, size_t count, loff_t *f_pos)
{
char memory_buffer = 'b';
/* Transferring data to user space */
copy_to_user(buf,memory_buffer,1);
/* Changing reading position as best suits */
if (*f_pos == 0) {
*f_pos+=1;
return 1;
} else {
return 0;
}
}
Код чтения значение:
fd = open("/dev/systimer", O_RDONLY);
// check for errors
if(fd < 0) {
perror("open(O_RDONLY)");
return errno;
} else
close(fd);
read(fd, &buf, 1);
printf("Buffer: %llu\n", buf);
printf("Buffer2: %c\n", buf);
Выход:
Buffer: 34336
Buffer2:
Спасибо.
Является ли 'buf' объявленным как' char' или 'unsigned long long'? –
Какой тип 'buf'? Это идентично 'memory_buffer'? Что является результатом 'printf (« Буфер:% x \ n », buf);'? – Wayne