Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/09/2008, à 11:33

esox

[résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Bonjour,

Voilà le problème que j'ai à résoudre :

J'utilise un module son semi pro connecté sur le port firewire (une MOTU 828 mkII pour info). Pour cela j'utilise le driver ffado et jack. Le soucis est que le port firewire partage son irq avec une des ports usb, d'où des pertes de synchro par moments (xruns). Ça serait simple si  c'était toujours avec le même port usb que se partage se faisait, mais j'ai six ports usb sur le portable... Alors parfois il s'agit d'un partage d'irq 20 et parfois 21 (le plus souvent, c'est 21).

Pour faire cela je lance dans un terminal :

cat /proc/interrupt

Ce qui me retourne quelque chose du genre :

...
21:        320        311   IO-APIC-fasteoi   uhci_hcd:usb3, ehci_hcd:usb7, ohci1394
...

En suite je lance ce script en sudo pour augmenter la priorité de l'irq 21 :

chrt -f -p 82 `pidof "IRQ-21"`
chrt -f -p 98 `pidof "IRQ-8"`

Ca marche mais je dois faire la manip à chaque boot...

Je pourrais mettre mon script dans rc.local, mais comme l'irq partagé peut varier...

Donc ce que je voudrais faire c'est lancer dans rc.local un script qui récupère la valeur d'irq de ohci1394 et intègre cette valeur dans la ligne de mon script :

chrt -f -p 82 `pidof "IRQ-21"`
...

bref que cela adapte la valeur d'irq de "pidof" selon le résultat renvoyé par cat /proc/interrupt

Je sais que ça peut se faire mais je ne sais pas comment...:|

Dernière modification par esox (Le 08/09/2008, à 13:25)

Hors ligne

#2 Le 04/09/2008, à 14:22

pipou24

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Salut,

Juste quelques pistes car je ne sait pas coder :
tu devrais ne recuperer qu'une ligne avec cat /proc/interrupt | grep ohci1394
ensuite utiliser sed pour récuperer le chiffre du debut de la ligne.

Ensuite, dans rc.local il te faut lancer les commandes avec leur chemin complet. Pour l'obtenir, il te faut utiliser which :
which chrt

Enfin, je demande a déplacer ton sujet dans "developpement programmation", tu y trouvera plus d'aide


Non geek et fier de l'être. ㋡

Hors ligne

#3 Le 04/09/2008, à 14:45

Totor

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Salut,
Voici une solution :

#récupération du pid
mon_pid=$(cat /proc/interrupt | grep ohci1394|cut -d: -f1)
# augmentation priorité
chrt -f -p 82 `pidof "IRQ-${mon_pid}"`

-- Lucid Lynx --

Hors ligne

#4 Le 04/09/2008, à 16:08

esox

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Merci les gars, je vais essayer cela dèque que j'ai un moment, et vais en profiter pour comprendre ces "cut", which, et autres -d: -f1.

Ca me rappelle le batch du DOS en plus fin.

Hors ligne

#5 Le 07/09/2008, à 11:15

esox

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Bon, bé ça marche pas, j'ai l'erreur suivante en lançant mon script (que j'ai appelé priority):

jean-martin@jm:~$ sudo Desktop/scripts/priority 
sched_getscheduler: No such process
failed to get pid 82's policy
jean-martin@jm:~$

la variable mon_pid renvoit bien l'irq de ieee1394, mais

chrt -f -p 82 `pidof "IRQ-${mon_pid}"`

renvoit une erreur. Pas d'erreur si je remplace ${mon_pid} par sa valeur (20 sur ce coup là)

Il y avait aussi une petite erreur : il manquait un "s" à interrupts...

Hors ligne

#6 Le 07/09/2008, à 18:23

Totor

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Bonsoir,
Que donne ceci ?

#récupération du pid
mon_irq=$(cat /proc/interrupt | grep ohci1394|cut -d: -f1)
# augmentation priorité
echo "PID=$(pidof "IRQ-${mon_irq}")"
#chrt -f -p 82 `pidof "IRQ-${mon_pid}"`

Note : j'ai changé le nom de la variable pour être plus cohérent avec sa signification.

Par ailleurs, que donne :

ps -ef|grep '^IRQ-'

Chez moi, ça ne retourne rien... As-tu réellement des processus ayant pour nom 'IRQ-<numero>' ???


-- Lucid Lynx --

Hors ligne

#7 Le 07/09/2008, à 23:50

esox

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Bonsoir Totor

#récupération du pid
mon_irq=$(cat /proc/interrupt | grep ohci1394|cut -d: -f1)
# augmentation priorité
echo "PID=$(pidof "IRQ-${mon_irq}")"
#chrt -f -p 82 `pidof "IRQ-${mon_pid}"`

renvoit :

PID=
ps -ef|grep '^IRQ-'

ne renvoit rien du tout...

et pourtant,

echo $mon_irq

renvoit bien une valeur : 21

Dernière modification par esox (Le 07/09/2008, à 23:53)

Hors ligne

#8 Le 08/09/2008, à 08:23

Totor

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Les résultats que tu m'indiques me confortent dans mes suppositions :
Tu n'as pas de processus dont le nom comme par 'IRQ-'
Il est donc étonnant que cela ait fonctionné lorsque tu le faisais manuellement....


-- Lucid Lynx --

Hors ligne

#9 Le 08/09/2008, à 08:56

Alain.g

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Bonjour

Sauf que grep '^IRQ-' ne retiendra que les lignes qui commencent par "IRQ". Ça ne risque donc pas de marcher, puisqu'avec ps -ef, toutes les lignes commencent par l'UID.

En faisant cat /proc/interrupts, je remarque que la plupart des lignes commencent par un espace (pour obtenir un effet d'alignement à droite). Je suppose que le problème vient de là, "$mon_irq" contient cet ou ces espaces. On a donc IRQ- 21 au lieu de IRQ-21

D'ailleurs dans ce cas, echo $mon_irq et echo "$mon_irq" ne renverront pas la même chose. L'espace ne sera conservé que dans le second cas.

Dernière modification par Alain.g (Le 08/09/2008, à 08:57)


Xubuntu Karmic !

Hors ligne

#10 Le 08/09/2008, à 09:06

Totor

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Bien vu !


-- Lucid Lynx --

Hors ligne

#11 Le 08/09/2008, à 11:28

esox

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Alors que pensez-vous de cela :

chrt -f -p 98 `pidof "IRQ-8"`
mon_irq=$(cat /proc/interrupts | grep ohci1394 | cut -c 2-3)
chrt -f -p 82 `pidof "IRQ-${mon_irq}"`

Maintenant si vous connaissiez une commande pour vérifier que la rtprio des irq-8 et celui de ohci1394 ont bien été changées...

Hors ligne

#12 Le 08/09/2008, à 11:57

Totor

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Pour connaître le rtprio d'un processus :
ps -o rtprio --pid <numpid>|tail -1

Tu le fais avant, après...et tu compares !

EDIT : je viens de découvrir l'option --no-headers de la commande ps big_smile. Donc, tu peux remplacer l'instruction donnée par :
ps -o rtprio --pid <numpid> --no-headers

Dernière modification par Totor (Le 08/09/2008, à 13:09)


-- Lucid Lynx --

Hors ligne

#13 Le 08/09/2008, à 13:24

esox

Re : [résolu] Récupérer l'irq de ieee1394 et l'utiliser dans un script

Ben ça marche, merci a vous tous !

Hors ligne