Модуль ядра Linux, filp_open возвращает «Нет такого файла или каталога» - PullRequest
0 голосов
/ 29 октября 2019

Я пишу драйвер устройства с модулем ядра. Я пропускаю детали, потому что они бесполезны;моя проблема в том, что, когда я открываю драйвер устройства, мне нужно открыть файл в каталоге с именем 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, но у меня та же ошибка. в чем проблема ??

...