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?
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.