Linux内存管理的相关函数,在此做个笔记,供以后需要时查阅。
1 内核空间动态申请
主要包括
kmalloc(), __get_free_page() 系列:申请的内存位于物理内存映射区,而且在物理上也连续,与真实的物理地址也只有一个固定的偏移。
vmalloc():虚拟内存空间为连续的内存区,物理内存上也不一定连续,也没有简单的换算关系
slab与内存池:kmem_cache_create/alloc/free/destroy
2 虚拟地址到物理地址的转换
virt_to_phys() , phys_to_virt()
3 mmap映射
remap_pfn_range() , nopage() , vm_insert_pages()
4 DMA
dma_mem_alloc()
DMA地址掩码 dma_set_mask()
DMA一致性缓冲区:dma_alloc/free_coherent/writecombine()
流式DMA缓冲区:dma_map/unmap_single