Puede esperar un controlador de dispositivo Linux para un DMA para terminar en la función device_remove ()?

StackOverflow https://stackoverflow.com/questions/2817685

Pregunta

He escrito un controlador de dispositivo Linux para un dispositivo PCI. Este dispositivo realiza las operaciones de DMA. Un problema surge cuando el programa se bloquea cuando una operación de DMA está en marcha.

De hecho, cuando estrellarse, la función device_remove() es llamado por el sistema (como si close() se llama). Esta función hace que la limpieza de las zonas de memoria utilizadas por el dispositivo PCI, libera la memoria asignada correctamente. Me refiero funciona correctamente bajo circunstancias normales.

Pero si un DMA está en funcionamiento, cuando en realidad se terminará, no será capaz de realizar la limpieza de DMA, ya que no tiene acceso más que los datos del dispositivo que han sido liberados. Una solución sencilla sería la de esperar en la función close (). (Esta es mi entendimiento, pero tal vez la última parte de la función DMA nunca se ejecuta?)

¿Es una buena idea para endecha sobre la DMA para realmente terminar en el device_remove() (también conocido como close()) la función de un controlador de dispositivo? ¿Hay otros medios para hacer frente a este problema?

¿Fue útil?

Solución

Sí, espera debería funcionar, pero:

A menos que usted está tratando de comportamiento de extracción de prueba sorpresa de su dispositivo PCI, creo que una llamada para eliminar () debe fallar cuando tiene el DMA de pasar a / desde el dispositivo. Además, no creo close () pueden ser tratados del mismo modo que remove (). Este último va a eliminar por completo todas las estructuras de datos relacionados con el dispositivo de memoria (por ejemplo: ver uno de los controladores de dispositivo de red). Por lo tanto, en otras palabras, lo que estoy tratando de decir es: wait () en el cierre () pero no logran () en remove ()

También en función de su situación, es posible que también desee echar un vistazo a referencia conteo para liberación de los recursos relacionados con el dispositivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top