最近刚开始看linux驱动,是一个键盘的驱动,硬件原理是比较简单的,但是看到外部中断扫描键值函数后,就是把键值交给arch_copy_to_user函数,这个函数我就看不懂了,论坛上有高手解说一下吗? ssize_t JackKB_read (struct file * file ,char * buf, size_t count, loff_t * f_ops) { unsigned char data[2]; ssize_t retval; data[0]= key[0]; data[1]= key[1]; if((data[0]== 6 ) && (data[1] == 4 )) { if (file->f_flags & O_NONBLOCK) { retval = -EAGAIN; } }
if(__arch_copy_to_user(buf, &data, sizeof(data))) return -EFAULT; key[0] = 6; key[1] = 4;
return (sizeof(data)); } |