Неявное объявление функции 'create_proc_entry'

Я пытаюсь использовать функцию create_proc_entry() для создания каталога в /proc. Когда я пытаюсь скомпилировать код, я получаю следующую ошибку: неявное объявление функции 'create_proc_entry'.

Это заголовки, которые я включил в мой .c файл:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/vmalloc.h>
#include <linux/uaccess.h>

Версия ядра на машине, которую я пытаюсь скомпилировать, это: 3.10.33-g7954807-dirty

Мне не хватает заголовков, необходимых для вызова этого метода? Или метод, устаревший в моей версии ядра?

Ответы

Ответ 1

Файловая система

/proc была реорганизована в 3.10, функция, которую вы ищете, была удалена, вы должны использовать полнофункциональное семейство функций proc_create. Обратите внимание, что подписи различны.

Версия 3.10: http://lxr.free-electrons.com/source/include/linux/proc_fs.h?v=3.10

3.9 версия: http://lxr.free-electrons.com/source/include/linux/proc_fs.h?v=3.9

Вы можете найти более подробное объяснение использования полнофункциональных/proc-функций в книге Linux Device Drivers 4 или, если вы хотите более короткое решение, проверьте эту ссылку (https://github.com/jesstess/ldd4/blob/master/scull/main.c), где вы можете увидеть, как использовался struct file_operations. Вам не нужно настраивать все поля структуры.