UART 드라이버 작성
QEMU의 ‘virt’ 보드에는 PL011 UART가 있으므로 이를 위한 드라이버를 작성해 보겠습니다.
Speaker Notes
Uart::new
는 안전하지 않지만(usafe), 그 외 다른 메서드들은 안전한(safe) 점에 주목하세요.다른 메서드들이 안전할 수 있는 이유는,Uart::new
의 안전 요구사항(즉, 지정된 UART의 드라이버 인스턴스가 하나만 있으며 주소 공간에 별칭을 지정하는 다른 항목이 없음) 이 만족되기만 하면write_byte
와 같은 함수를 안전하게 호출하는데 있어서 필요한 모든 전제조건이 만족되기 때문입니다.- 반대 방법으로도 실행할 수 있지만(
new
를 안전하게 만들고write_byte
를 안전하지 않게 만듦) 이는write_byte
를 호출하는 모든 위치에서 안전성에 관해 추론해야 하므로 사용 편의성이 훨씬 떨어집니다. - 이는 안전하지 않은 코드의 안전한 래퍼를 작성하는 일반적인 패턴입니다. 안전에 관한 증명 부담을 여러 많은 위치에서 소수의 위치로 옮기는 것입니다.