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