Vamos a escribir un controlador de UART
La máquina “virt” de QEMU tiene una UART [PL011]https://developer.arm.com/documentation/ddi0183/g), así que vamos a escribir un controlador para ella.
Speaker Notes
- Ten en cuenta que
Uart::new
no es seguro, mientras que los otros métodos sí lo son. Esto se debe a que mientras que el llamador deUart::new
asegure que se cumplan sus requisitos de seguridad (es decir, que solo haya una instancia del controlador para una UART determinada y que nada más asigne alias a su espacio de direcciones), siempre es más seguro llamar awrite_byte
más adelante, ya que podemos asumir\ las condiciones previas necesarias. - Podríamos haberlo hecho al revés (haciendo que
new
fuese seguro ywrite_byte
no seguro), pero\sería mucho menos cómodo de usar, ya que cada lugar que llamase awrite_byte
tendría que pensar en la seguridad - Este es un patrón común para escribir envoltorios seguros de código inseguro: mover la carga de la prueba de seguridad de un gran número de lugares a otro más pequeño.