#1 Le 05/10/2008, à 16:10
- VOldo
Communication avec un module home-made
Salut à vous!
J'ai programmé un petit module en c (pour communiquer avec un basicstamp par le port série).
Celui-ci fonctionne, est chargé en mémoire, mais je suis coincé(je n'ai rien trouvé traitant de ce sujet sur internet) sur une chose qui à mon avis est toute simple:
Comment faire communiquer un autre programme codé en c(ou un autre langage) avec ce module???
Merci de m'éclairer
Edit:
Pour clarifier la chose prenons un petit exemple:
Mon module contient une fonction qui permet d'écrire sur le port série ( writeData(); ) et je voudrais pouvoir mettre à disposition l'acces à cette fonction à des programmes appelants!
Hors ligne
#2 Le 05/10/2008, à 19:50
- Link31
Re : Communication avec un module home-made
Il faudrait savoir ce que tu appelles un module. Est-ce un module noyau, ou une bibliothèque, ou un plugin ?
Si c'est un module noyau, tu peux utiliser sysfs, procfs ou un fichier de périphérique. Si c'est une bibliothèque, il suffit de compiler ton programme avec et d'appeler ses fonctions. Si c'est un plugin, il faut le charger avec libdl, récupérer la fonction qui t'intéresse puis l'appeler.
Hors ligne
#3 Le 06/10/2008, à 17:02
- VOldo
Re : Communication avec un module home-made
Après recherche(faut bien sélectionner ses mots avec google), j'ai trouvé un bon tuto qui explique comment créer un lien avec le mode utilisateur (les appels systèmes) donc tout est ok maintenant
Merci à vous
Dernière modification par VOldo (Le 06/10/2008, à 17:28)
Hors ligne
#4 Le 06/10/2008, à 17:55
- Link31
Re : Communication avec un module home-made
Tu imagines le bordel si chaque driver définissait ses propres syscalls ? Oui, ça fonctionne, mais ce n'est pas ce que j'appellerais une bonne méthode, ou un bon tuto.
Puisqu'il s'agit d'un module noyau, fais comme tous les modules noyau : au choix :
- sysfs
- procfs (déprécié, à éviter)
- un fichier de périphérique
edit : évidemment, tu peux aussi implémenter les appels système "normaux", du type read(), write()... Ce qui revient à définir un fichier de périphérique, mais bon... Comme j'avais cru comprendre que tu voulais rendre ta fonction writeData() disponible depuis l'userspace, je préfère te conseiller de ne pas en faire un nouveau syscall si c'est ce que tu comptais faire.
Dernière modification par Link31 (Le 06/10/2008, à 17:59)
Hors ligne
#5 Le 07/10/2008, à 14:16
- VOldo
Re : Communication avec un module home-made
Salut!
En fait je me suis mal exprimé:
le tuto explique comment monter un fichier dans /dev. quand l'utilisateur appel sur ce fichier les open() writr() read(), cela redirige ses appels vers mes fonctions contenues dans le module.
Edit le tuto que j'ai survolé:
http://www.milw0rm.com/papers/203
Dernière modification par VOldo (Le 07/10/2008, à 15:54)
Hors ligne