Добрый день всем!
Есть следующий пример, в котором создается файл на /proc который тут же открывается через файловый дескриптор.
Так вот, проблема в том, что fp->f_dentry->d_inode->u.generic_ip
содержит NULL (вместо адреса file_entry, как ожидается) поэтому дальнейшая работа из ядра с этим файлом проваливается.
С другой стороны, созданный файл открвается и читается из user (c помощью open(...)), значит в данном случае u.generic_ip не 0, если верить исходникам операции чтения из файла.
Так вот вопрос: кто виноват? или create_proc_entry(...) что-то не то создал или filp_open(...) что-то не так открыл.
Этот же самый код без проблем работает в 2.4.24, но я не могу на него (ядро) перейти по условиям задачи...
С надеждой на помощь...
С.П.
my_root = create_proc_entry("test_dir",
(S_IFDIR | S_IRUGO | S_IXUGO),
(struct proc_dir_entry*)0);
if (my_root == NULL)
{
result = -ENOMEM;
goto out;
}
my_root->owner = THIS_MODULE;
printk("<1>dir_iops: %p\n",my_root->proc_iops);
printk("<1>dir_fops: %p\n",my_root->proc_fops);
file_entry = create_proc_entry("testname",
(S_IRUGO | S_IWUGO),
my_root);
file_entry->owner = THIS_MODULE;
file_entry->read_proc = vars_reader;
printk("<1>file_iops: %p\n",file_entry->proc_iops);
printk("<1>file_fops: %p\n",file_entry->proc_fops);
printk("<1>file_data: %p\n",file_entry->data);
printk("<1>file_read_proc: %p\n",file_entry->read_proc);
printk("<1>file_write_proc: %p\n",file_entry->write_proc);
fp = filp_open("/proc/test_dir/testname", O_RDONLY, 0);
if (IS_ERR(fp))
{
printk("<1>Error open file with code %ld\n",-PTR_ERR(fp));
}
else
{
printk("<1>vsfmnt: %p\n",fp->f_vfsmnt);
printk("<1>fops: %p\n",fp->f_op);
printk("<1>node: %p\n",fp->f_dentry->d_inode->u.generic_ip);
filp_close(fp,0);
}
Ответ на:
Чудеса
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Проблема при работе /proc на ядре 2.4.18 (2004)
- Форум Вопрос про использование GOTO (2006)
- Форум доступ к файлам из ядра (2002)
- Форум Драйвер для биореактора под Linux 2.6 (2005)
- Форум Трабл с модулем (2005)
- Форум вызов generic_make_request из обработчика запросов блочного устройства (2019)
- Форум Чудеса (2006)
- Форум Чудеса (2005)
- Форум Чудеса... (2005)
- Форум kernel 2.4.18 (2002)