Skip to content

Chia sẻ bộ nhớ: mmap, UIO, dma-buf

Ánh xạ bộ nhớ kernel hoặc thiết bị vào không gian user để truyền dữ liệu lớn, zero-copy.

mmap trong driver

TODO

  • Callback .mmap
  • remap_pfn_range(), vm_insert_page()
  • Cache attribute: pgprot_noncached, pgprot_writecombine

Buffer DMA

TODO

  • dma_alloc_coherent() và dma_mmap_coherent()
  • Đồng bộ cache

UIO

TODO

  • Driver ở user space
  • Ví dụ với IP FPGA trên Zynq
  • Xử lý interrupt qua read() trên /dev/uioX

dma-buf

TODO

  • Chia sẻ buffer giữa các driver và user space

Kernel bypass

TODO

  • Mô hình của DPDK

Ví dụ chạy thử

TODO

  • Driver mẫu mmap một buffer và chương trình user đọc/ghi

Khi nào dùng / không nên dùng

TODO

  • Ưu điểm, hạn chế
  • So sánh với các interface khác

Tham khảo