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