- 论坛徽章:
- 0
|
本帖最后由 山丘之王MK 于 2013-06-27 16:09 编辑
最近在写一个驱动,在write设备方法中,将用户空间的数据buf传送到内核空间的data1数组中,发现在应用程中调用write失败,返回-1,也就是根本没执行内核中的write设备方法,而read却是成功的。代码如下:
static ssize_t my522_write(struct file *filp, const char __user *buf, size_t size, loff_t *ppos)
{
unsigned long p = *ppos;
unsigned int count = size;
int ret = 0;
printk(KERN_INFO"TEST WRITE\n"); //用来测试有没执行my522_write,发现根本没执行。用户空间中调用write返回-1。
if (copy_from_user((void *)data1,buf,count))
{
printk(KERN_INFO"copy from user wrong!\n");
ret = - EFAULT;
}
else
{
printk(KERN_INFO "written %d bytes(s) from %d\n", count, p);
}
return ret;
} |
|