Skip to content

Latest commit

 

History

History
18 lines (10 loc) · 536 Bytes

File metadata and controls

18 lines (10 loc) · 536 Bytes

IO Buffers

Certain parts of the kernel require IO buffers. For example:

  • ISA DMA
  • Bus Mastering DMA
  • Virtio

In general, IO buffers have certain requirements

  • They need to be below 32MB physical RAM
  • They need to be 64KB aligned

When writing device drivers, it's important to program the physical hardware with physical RAM addresses, not virtual addresses. Therefore, CosmOS stores IO buffers in physical RAM below 1MB which is identity mapped.

IO Buffers uses a bitmap-based allocator to provide IO buffers to devices