buddy_system_allocator

‘buddy_system_allocator’ یک third-party crate است که یک buddy system allocator را پیاده‌سازی می‌کند. می‌توان آن را هم برای ‘LockedHeap’ در پیاده‌سازی [GlobalAlloc]‌(https://doc.rust-lang.org/core/alloc/trait.GlobalAlloc.html) استفاده کرد. بنابراین می‌توانید از crate استاندارد alloc (همانطور که قبل از دیدیم) یا برای تخصیص فضای آدرس دیگر استفاده کنید. به عنوان مثال، ممکن است بخواهیم فضای MMIO را برای PCI BARها اختصاص دهیم:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

  • ‏ PCI BAR‌ها همیشه دارای تراز برابر با اندازه خود هستند.
  • مثال را با cargo run در src/bare-metal/useful-crates/allocator-example/ اجرا کنید. (به دلیل وابستگی به crate در Playground اجرا نمی‌شود.)