Como saber quando um dispositivo está pronto

Como saber quando um dispositivo está pronto

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 jackdiniciar, ele morre alguns segundos depois. Capturei sua saída e continha uma mensagem de erro. Para testar, falsifiquei o evento udev udevadm triggere 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 2ao 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 sleepacumula muitas latências desnecessárias.

Então, há alguma maneira de saber quando um dispositivo está realmente pronto?

informação relacionada