Eu tenho um console de mixagem firewire e escrevi uma regra udev que chama um script para configurar toda a cadeia de áudio (alsa -> pulseaudio -> jackd -> firewire) assim que o console for ligado.
Agora percebi que, ao jackd
iniciar, ele morre alguns segundos depois. Capturei sua saída e continha uma mensagem de erro. Para testar, falsifiquei o evento udev udevadm trigger
e tudo funcionou bem.
Isso me fez acreditar que leva algum tempo entre o momento em que o evento (real) do udev é acionado e o momento em que o dispositivo está realmente pronto. Meu evento falso do udev não sofreu com esse problema, porque o console estava ligado e /dev/fw1 estava presente e pronto o tempo todo.
Na verdade, adicionar um sleep 2
ao meu script resolveu o problema, mas não estou satisfeito com esta solução. Parece frágil, porque sob carga pesada posso precisar de três ou quatro segundos. E ser muito generoso comigo sleep
acumula muitas latências desnecessárias.
Então, há alguma maneira de saber quando um dispositivo está realmente pronto?