web-dev-qa-db-fra.com

déclaration implicite de la fonction 'create_proc_entry'

J'essaie d'utiliser la fonction create_proc_entry () pour créer un répertoire sous/proc. Lorsque j'essaye de compiler le code, j'obtiens l'erreur suivante: déclaration implicite de la fonction 'create_proc_entry'.

Voici les en-têtes que j'ai inclus dans mon fichier .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>

La version du noyau sur la machine pour laquelle j'essaye de compiler est: 3.10.33-g7954807-dirty

Suis-je absent des en-têtes nécessaires pour appeler cette méthode? Ou la méthode est-elle déconseillée dans ma version du noyau?

18

Le système de fichiers/proc a été refactorisé en 3.10, la fonction que vous recherchez a été supprimée, vous devez utiliser la fonction complète proc_create famille de fonctions. Notez que les signatures sont différentes.

Version 3.10: http://lxr.free-electrons.com/source/include/linux/proc_fs.h?v=3.1

Version 3.9: http://lxr.free-electrons.com/source/include/linux/proc_fs.h?v=3.9

Vous pouvez trouver plus d'explications sur l'utilisation des fonctions complètes/proc dans le livre Linux Device Drivers 4, ou, si vous voulez une solution plus courte, consultez ce lien ( https://github.com/jesstess/ldd4/blob/ master/scull/main.c ) où vous pouvez voir comment le struct file_operations a été utilisé. Vous n'avez pas besoin de configurer tous les champs de la structure.

23
Felipe Lavratti