Vamos escrever um driver UART

A máquina ‘virt’ do QEMU possui um UART PL011, então vamos escrever um driver para isso.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

  • Observe que Uart::new nĂŁo Ă© seguro, enquanto os outros mĂ©todos sĂŁo seguros. Isso ocorre porque, desde que o chamador de Uart::new garanta que seus requisitos de segurança sejam atendidos (ou seja, que haja apenas uma instĂąncia do driver para um determinado UART e nada mais que faça alias do seu espaço de endereço), entĂŁo Ă© sempre seguro chamar write_byte mais tarde porque podemos assumir as precondiçÔes necessĂĄrias.
  • PoderĂ­amos ter feito o contrĂĄrio (tornando new seguro, mas write_byte inseguro), mas isso seria muito menos conveniente de usar, pois todos os lugares que chamam write_byte precisariam raciocinar sobre a segurança
  • Este Ă© um padrĂŁo comum para escrever invĂłlucros seguros de cĂłdigo inseguro: transferir o ĂŽnus da prova de correção de um grande nĂșmero de lugares para um nĂșmero menor de lugares.