- 论坛徽章:
- 0
|
还是前几天那个dm642的pci驱动。
static ssize_t device_read(struct file *filp, char __user *buf, size_t count, loff_t *offp),
static ssize_t device_write(struct file *filp, const char __user *buf, size_t count, loff_t *offp),
static loff_t device_llseek(struct file *filp, loff_t off, int whence),
这三个内核驱动函数,在和用户空间交互数据的时候都有些问题。
read和write,count应该等于用户空间的fread、fwrite的字节个数,实际上我在内核里打印出来不等于。
buf指针传递的没有问题。
llseek里的whence,对应于用户空间fseek的SEEK_SET==0、SEEK_CUR==1、SEEK_END==2,实际上,0和1可以正常传递。当用户空间的参数是2时,内核空间接收到的数据是0;除此之外的其余数据,内核空间直接没有调用device_llseek。
请问这是可能什么原因呢,谢谢。 |
|