我正在嘗試爲Raspberry Pi編寫Linux內核模塊。一切都很好,除了當我嘗試使用copy_to_user或put_user時,如果我將它打印爲llu,它總是返回一個「34336」的值,並且如果將它打印爲字符,則不會有任何結果。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'? – 2013-05-02 16:00:21
'buf'的類型是什麼?與memory_buffer相同嗎? 'printf(「Buffer:%x \ n」,buf)的結果是什麼;'? – Wayne 2013-09-09 03:43:38