بیایید یک درایور UART بنویسیم
این ماشین QEMU ‘virt’ یک PL011 بهعنوان UART دارد، پس بیایید یک درایور برای آن بنویسیم.
Speaker Notes
- توجه داشته باشید که
Uart::new
ناامن یا unsafe است در حالی که متدهای دیگر ایمن هستند. این بهخاطر این است که تا زمانی که تماس گیرندهUart::new
تضمین کند که الزامات ایمنی آن برآورده شده است (یعنی فقط یک نمونه از درایور برای یک UART مشخص وجود دارد و هیچ چیز دیگری نام مستعار فضای آدرس آن را ندارد)، پس همیشه میتوانwrite_byte
را بعداً فراخوانی کرد زیرا میتوانیم پیششرطهای لازم را فرض کنیم. - ما میتوانستیم این کار را به صورت دیگری انجام دهیم ( ساخت
new
را ایمن کنیم، اماwrite_byte
را ناامن کنیم)، اما استفاده از آن بسیار راحتتر خواهد بود، زیرا هر مکانی کهwrite_byte
را صدا میزند باید در مورد ایمنی یا safety استدلال کند. - This is a common pattern for writing safe wrappers of unsafe code: moving the burden of proof for soundness from a large number of places to a smaller number of places.