Communication entre modules kernel - C - Programmation
Marsh Posté le 07-02-2006 à 11:46:49
si c'est des fichiers C, t'as juste à faire un include, enfin ça se trouve j'ai pas compris et c'est plus compliqué
Marsh Posté le 07-02-2006 à 11:54:53
nico_du_63 a écrit : Je suis en train de développer 2 drivers linux. J'aimerais savoir comment appeler une fonction d'un driver à partir de l'autre et aussi comment passer des paramètres de l'un à l'autre. |
Le bon forum est "OS-Alternatifs"
http://forum.hardware.fr/hardwaref [...] ujet-1.htm
Il suffit de définir une fonction publique (éventuellement avec des paramètres) et de l'exporter (détails dans le manuel 'Modules', ça dépend peut être de la version du kernel). Son nom doit être unique, évidemment, car elle fait partie du noyau.
L'espace mémoire est commun ('Kernel'), donc il n'y a pas à faire de recopie de données.
Nota.
- Il doit y avoir une hiérarchie appelant / appelé (pas d'appels croisés).
- Le module fournissant la fonction doit être chargé avant celui qui l'utilise (la résolution est dynamique)
Marsh Posté le 07-02-2006 à 12:02:59
J'ai essayé avec inter_module_put et inter_module_get et inter_module_register mais apparemment leur utilisation est déconseillée :
warning: `inter_module_put' is deprecated (declared at include/linux/module.h:578)
idem pour inter_module_get et inter_module_register
En +, je n'arrive pas à passer un paramètre aux fonctions appelées donc c'est galère.
J'aurais bien aimé savoir s'il n'y avait pas une manière + simple (ioctl par exemple ???) et si non comment passer un parametre aux fonctions appelées.
Marsh Posté le 07-02-2006 à 11:31:42
Salut a tous
Je suis en train de développer 2 drivers linux. J'aimerais savoir comment appeler une fonction d'un driver à partir de l'autre et aussi comment passer des paramètres de l'un à l'autre.
merci d'avance
Nico