Cómo saber cuando un dispositivo está listo

Cómo saber cuando un dispositivo está listo

Tengo una consola de mezclas Firewire y escribí una regla udev que llama a un script para configurar toda la cadena de audio (alsa -> pulseaudio -> jackd -> firewire) tan pronto como se enciende la consola.

Ahora noté que, mientras jackdcomienza, muere unos segundos después. Capturé su resultado y contenía un mensaje de error. Para las pruebas, falsifiqué el evento udev udevadm triggery todo funcionó bien.

Esto me hizo creer que simplemente pasa algo de tiempo entre el momento en que se activa el evento (real) de udev y el momento en que el dispositivo está realmente listo. Mi evento udev falso no sufrió este problema, porque la consola estaba encendida y /dev/fw1 estuvo presente y listo todo el tiempo.

De hecho, agregar sleep 2a mi script resolvió el problema, pero no estoy satisfecho con esta solución. Parece frágil, porque bajo una carga pesada podría necesitar tres o cuatro segundos. Y siendo demasiado generoso con sleepmi acumulación de latencias innecesarias.

Entonces, ¿hay alguna forma de saber cuándo un dispositivo está realmente listo?

información relacionada