vfs_write返回EINVAL吗?

时间:2019-10-21 20:02:10

标签: linux file module kernel vfs

我正在尝试使用Linux内核模块编写驱动程序。我用mknod创建了一个特殊文件,称为“ newfile”。我在该文件上执行了chmod以启用写入权限,然后输入777。我试图在此文件中用终端命令执行此命令:echo“ Writing on file”> newfile,但是出现错误,并且从我在vfs_write中得到了-EINVAL的驱动程序。 这是我的代码:

static ssize_t device_write(struct file *flip, const char *buffer, size_t len, loff_t *offset) {

    printk(KERN_INFO "writing on file; buffer is: %s   len is: %d    offest is:  %lld \n",buffer,len,offset);


    return file_write(flip, offset,buffer,len); 
}




int file_write(struct file *file, unsigned long long offset, unsigned char *data, unsigned int size) 
{
//mm_segment_t oldfs;
    int ret;

    //oldfs = get_fs();
    //set_fs(get_ds());

    ret = vfs_write(file, data, size, &offset);

    if(ret == -EINVAL)
    printk(KERN_INFO "is EINVAL!");

    else
     printk(KERN_INFO "not EINVAL!");
 return ret;
}

问题出在哪里?我听不懂

0 个答案:

没有答案