Linux内核模块filp_open返回“没有这样的文件或目录”

时间:2019-10-29 17:08:56

标签: c linux module kernel

我正在使用内核模块编写设备驱动程序。我跳过细节是因为它们没有用。我的问题是,当我打开设备驱动程序时,必须在名为dirA的目录中打开一个文件,并且必须阅读内容。当我执行filp_open时,出现错误代码-2,即“没有这样的文件或目录”,但是当我运行一个用户空间程序时,我没有这个问题。 我试图在其他代码行中移动filp_open,但是我遇到了同样的问题。

这是我的空缺:

static int device_open(struct inode *inode, struct file *file) {



 printk(KERN_INFO "%s called driver!\n");

 loff_t pos = 0;


 mm_segment_t oldfs;
 int err = 0;

 oldfs = get_fs();
 set_fs(get_ds());
 orig_filp = filp_open("/user/filenameabcedef", O_RDONLY, 0666);
 set_fs(oldfs);

 if (IS_ERR(filp)) {
printk(KERN_ALERT "ERROR: filp_open\n");
printk(KERN_ALERT "ERROR CODE: %d\n", PTR_ERR(filp));
    err = PTR_ERR(filp);
    //printk("Err is: %s\n",err);
    return NULL;
 }

 return 0;
}

我也尝试了没有getfs / getds,但是我有同样的错误。 问题出在哪里?

0 个答案:

没有答案