Bonjour,
Pour résumé en en quelques mots : A l'aide ! ;)
Je suis en train d'écrire un module et une librairie afin d'avoir un block device mais depuis le userland. Un peu comme FUSE, mais en mode block.
Mon code semble bon, mais j'ai un freeze du kernel. Je suspecte donc un deadlock quelque part, mais mes connaissances en programmation kernel et en deboggage surtout sont assez limité.
Pouvez vous me donner un coup de main pour débogger ce module ?
pour les sources (si besoin) c'est :
Module : http://www.ethernetvirtualstorage.net/Livraison/EvsKernel.ta(...)
Librairie + prog de test : http://www.ethernetvirtualstorage.net/Livraison/KernelInterf(...)
Attention, pour débogger, j'ai ralenti les messages de log avec un msleep dans la fonction debug_real. A enlever si vous voulez débrider le module.
De plus, le module compile pour mon noyau (2.6.28) mais il semble que l'api des block devices a changé en 2.6.30 donc il se peut qu'il ne compile pas pour vous.
Merci
# Bon c'est peut etre dans les details....
Posté par TheBreton . Évalué à 2.
En embarqué ou en kernel on doit toujours mettre une limite temporel ou un compteur de boucle au cas ou...
pour le debug pas trop le choix, utilise kdb (qui est dans le kernel mais faut le recompiler) et/ou kgdb qui necessite kdb et 2 machine pour le debug.
[^] # Re: Bon c'est peut etre dans les details....
Posté par Krunch (site web personnel) . Évalué à 3.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: Bon c'est peut etre dans les details....
Posté par DeadMaXfr . Évalué à 1.
Pour les while, c'est juste pour être sûr que j'obtient le lock.
Je vais améliorer ce point là, même si je sais que c'est pas ça.
Sinon, j'ai compillé le module avec un noyau 2.6.31, avec les nouvelles API. Je vais voir ce que ça donne ...
To be continued
[^] # Re: Bon c'est peut etre dans les details....
Posté par Krunch (site web personnel) . Évalué à 4.
Si. Mais pas dans les logs. Si t'as pas la possibilité de monter une console série, tu peux essayer netconsole. Mais bon, après, k(g)db redevient peut-être plus pratique aussi.
> Pour les while, c'est juste pour être sûr que j'obtient le lock.
J'ai pas regardé le code mais ça pue assez bien ton truc là, que ça soit lié au problème ou non.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # [ SUJET RESOLU ]
Posté par DeadMaXfr . Évalué à 1.
C'est bien un while qui pose problème.
Merci pour ces judicieux conseilles !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.