Communication entre modules kernel

Communication entre modules kernel - C - Programmation

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

Reply

Marsh Posté le 07-02-2006 à 11:31:42   

Reply

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é :D

Reply

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)


Message édité par Emmanuel Delahaye le 07-02-2006 à 11:57:13

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed