Давайте напишемо драйвер UART
Машина QEMU ‘virt’ має PL011 UART, тож давайте напишемо для нього драйвер.
Speaker Notes
- Зауважте, що
Uart::new
є небезпечним, тоді як інші методи є безпечними. Це пов’язано з тим, що доки викликачUart::new
гарантує, що його вимоги безпеки дотримано (тобто, що існує лише один екземпляр драйвера для даного UART, і ніщо інше не змінює його адресний простір), доти безпечно викликатиwrite_byte
пізніше, оскільки ми можемо припустити, що виконано необхідні передумови. - Ми могли б зробити це навпаки (зробити
new
безпечним, алеwrite_byte
небезпечним), але це було б набагато менш зручно використовувати, оскільки кожне місце, яке викликаєwrite_byte
, мало б міркувати про безпеку - Це загальний шаблон для написання безпечних оболонок небезпечного коду: перенесення тягаря доведення правильності з великої кількості місць на меншу кількість місць.