comportement de select() dans un module noyau

comportement de select() dans un module noyau - Linux et OS Alternatifs

Marsh Posté le 24-03-2006 à 17:17:47    

Bonjour, bonjour,
 
Je suis en train d'écrire un pilote (c'est mon premier...) pour interpreter des trames GPS. J'ai déjà développé un programme executable au niveau userland qui réalise avec succès les traitements néscessaires, maintenant je souhaite adapter ce programme pour le faire tourner en tant que drivers au niveau noyau.
 
Comme mon prog est à l'écoute permanente du port RS232, j'utilise la fonction select() à l'interieur d'une boucle de lecture infinie. Select() suspend le processus en cours, et attend un evenement sur RS232. Quand des données se présentent mon processus est réveillé, une lecture est faite suivi des traitement, et je retourne au début de ma boucle infinie, et je reviens en attente sur Select()
 
Mais comment va se comporter select() en mode noyau? Si elle bloque le processus en cours, au niveau noyau est ce que cela pose problème? Est ce que cela risque de suspendre tout le noyau? ou d'en perturber son fonctionnement? Ou est ce que chaque module est vu par le noyau comme un "processus' indépendant?
 
 
 
Voili, voilou. Merci d'avance.

Reply

Marsh Posté le 24-03-2006 à 17:17:47   

Reply

Marsh Posté le 24-03-2006 à 17:34:26    

tu débugges via /proc ou bien ?


---------------
-~- Libérez Datoune ! -~- Camarade, toi aussi rejoins le FLD pour que la flamme de la Révolution ne s'éteigne pas ! -~- A VENDRE
Reply

Marsh Posté le 24-03-2006 à 17:35:58    

pour le moment je debug rien, j'ai pas encore compilé le module.  
 
J'en suis au questions prélimianires et recherche d'info sur la construction d'un drivers linux...

Reply

Marsh Posté le 24-03-2006 à 18:23:15    

hop hop pas trop vite gamin!!!
 
 
pour ceux que ca interesse: select() en mode noyau n'est pas disponible, pas plus que read ou write,  ou en tout cas pas comme cà!  
 
Y a du syscall qui traine, je cherche....

Reply

Marsh Posté le 24-03-2006 à 19:30:49    

J'y connais rien en programmation mais j'ai quand même une question :D
 
si ton soft marche très bien en userland, pourquoi vouloir le passer en module noyau où les contraintes sont quand même nettement plus grandes ?  
(en dehors de l'intérêt intellectuel)


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 25-03-2006 à 15:43:29    

1°) Pour un souci de cohérence avec le reste de mon projet:  
=> j'ai une application principale qui gere user et affichage. Cette appli utilise plusieurs sources de donnée en provenance de capteurs electroniques donc obligation de développer des drivers!
=> Du coup le drivers GPS sur RS232 était pour moi un premier entrainement.  
 
 
 
Mais il est clair que si ca me faire perdre du temps, je vais me contenter de mon appli userland qui tournera dans un processus parallèle.

Reply

Marsh Posté le 25-03-2006 à 15:53:57    

De mémoire, il faut jouer avec cli(), sti(), select_wait(), sleep_on() et wake_up()... C'est un peu loin pour moi, mais avec ça tu devrais trouver les tutos kivonbien


Message édité par kzimir le 25-03-2006 à 15:54:10

---------------
Serre les fesses jusqu'en 2012...
Reply

Sujets relatifs:

Leave a Replay

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