From: matthieu castet <[EMAIL PROTECTED]>
asbin ;-] wrote:
Roland Mas wrote:
Frederick Ros, 2004-05-28 09:08:02 +0200 :
Quoting "asbin ;-]" <[EMAIL PROTECTED]>:
Roland Mas wrote:
c'est hotplug qui doit lancer le script 2 fois, mais ça l'avait jamais
fait avant alors je sais pas trop...
Non, c'est vrai .. avant ca le lancait 3 fois d'affilee ;)
Je sais pas pourquoi, mais c'est en te lisant que j'ai trouvé la
solution. Apparemment le contenu de
/etc/hotplug/usb/eagle-usb.usermap se retrouvait dupliqué dans
/etc/hotplug/usb.usermap. Je suppose que c'était historique. Si je
nettoie ce fichier, du coup le DSP n'est plus chargé qu'une seule
fois.
Roland.
Nan, c'est pas à cause de ça. Chez moi, /etc/hotplug/usb.usermap est
vide, et hotplug lance quand même le script 2 fois.
J'ai une piste tout de même :
un petit 'ls /var/run/usb' me donne :
"%sys%devices%pci0000:00%0000:00:07.2%usb1%1-1
%sys%devices%pci0000:00%0000:00:07.2%usb1%1-1%1-1:1.0"
donc le script est lancé 2 fois avec la variable REMOVER différente,
donc sûrement une variable DEVICE différente...
J'ai pas vraiment le temps de voir ça maintenant, mais je pense que c'est
vers là qu'il faut chercher...
on a REMOVER=/var/run/usb/$(readlink -f $SYSFS/$DEVPATH | sed -e 's;/;%;g')
hotplug est lancer pour chaque interface, actuelemnt on test si
LAST_CHARS=`echo $DEVPATH | sed -e "s/.*\-.[^:]*//1"` est vide ou = :1.0,
donc on laisse le script se lancer 2 fois ...
D'ou les 2 remover <>...
Chez moi (debian instable c'est meme pire) le script est lancer 3 fois :
une fois lors du demarage (qd le driver vient d'etre juste de charger le
firmware) et puis 2 autre fois quand hotplug charge les periph deja branche
...
Fort de ces renseignements précieux, j'ai essayé de comprendre ce qui se
passe chez moi.
"/etc/init.d/hotplug start" charge un petit nombre de module tel que
ohci_hcd. Certain vont se comporter comme des agents et gérer les évenements
sur le périphérique qu'il contrôle. Chez moi ohci_hcd exécute
/etc/hotplug/usb.agent quand je branche mon modem.
J'ai ajouté quelques lignes pour tracer les appels au script eagle-usb pour
contrôler ses appels.
Au début il était appelé 5 fois ! Avec l'obsolète /etc/hotplug/usb.usermap,
7 appels ; et sans /etc/hotplug/usb.usermap ni
/etc/hotplug/usb/eagle-usb.usermap, encore 3 appels...
Dans tous les cas je n'avais qu'un seul chargement du dsp car LAST_CHAR
n'est jamais nul.
----------- extrait de usb.agent --------------
# some devices have user-mode drivers (no kernel module, but config)
# or specialized user-mode setup helpers
MODPROBE=:
for MAP in $MAP_USERMAP $HOTPLUG_DIR/usb/*.usermap
do
------- fin extrait de usb.agent --------------
En fait eagle-usb.usermap fait doublon avec
/lib/modules/<version-kernel>/modules.usbmap.
Je suppose que c'est l'installation du modules qui écrit ce fichier.
Après l'avoir supprimer, le script est lancé trois fois : LAST_CHAR vaut
successivement 1.0, 1.1 et 1.2 (le hub et les deux prises non ?).
Mais tout ceci n'explique pas pourquoi le module est chargé plusieurs fois
chez certaines gens.
----------- extrait de usb.agent --------------
if [ "$DEVPATH" != "" ]; then
# probably, 2.6.x
REMOVER=/var/run/usb/$(readlink -f $SYSFS/$DEVPATH | sed -e 's;/;%;g')
elif [ "$DEVICE" != "" ]; then
# 2.4.x?
REMOVER=/var/run/usb/$(echo $DEVICE | sed -e 's;/;%;g')
else
# should not happen?
REMOVER=/var/run/usb/$(echo "$INTERFACE/$PRODUCT/$TYPE" | sed -e
's;/;%;g')
fi
------- fin extrait de usb.agent --------------
Si j'en crois les commentaires LAST_CHAR vaudra toujours NULL pour les noyau
2.4 (je ne peux plus tester, je l'ai retiré). Si les mêmes évenements sont
générés, ils chargeront donc trois fois le module.
On pourrait peut-être remplacer
(je ne suis pas sûr que DEVICE est la même syntaxe que DEVPATH) :
LAST_CHARS=`echo $DEVPATH | sed -e "s/.*\-.[^:]*//1"`
par
if [ "$DEVPATH" != "" ]; then
# probably, 2.6.x
LAST_CHARS=`echo $DEVPATH | sed -e "s/.*\-.[^:]*//1"`
elif [ "$DEVICE" != "" ]; then
# 2.4.x?
LAST_CHARS=`echo $DEVICE | sed -e "s/.*\-.[^:]*//1"`
else
# should not happen?
exit
fi
Deux questions :
- Pour ceux qui constatent plusieurs chargements, noyau 2.4 ou 2.6 ?
- Pour les noyaux 2.4, quel est la syntaxe de DEVICE ?
mcoolive.
_________________________________________________________________
Bloquez les fenêtres pop-up, c'est gratuit ! http://toolbar.msn.fr