要做一个内核态module,负责申请一块几兆大小的物理连续的内存块,用作外设的DMA缓冲区。同时使应用程序可以对该内存进行读写。应该用什么机制获得该内存呢?查阅资料,kmalloc可以分配物理连续的内存,可是最大只能申请128K。那如何获得这个物理连续的大内存块呢?
回复(3) 2004-12-30 17:02 来自版块 - LINUX&UNIX核心开发
表情
brucezh找到了,__get_free_pages 在2.0版本之后可以申请最大到2M的物理连续的内存。(2004-12-31 10:44)
brucezh难道必须用kmalloc才能得到物理连续内存吗?可是如果分配大于128K(32pages)的内存,kmalloc是无能为力的。(2004-12-31 10:35)
yfttykmalloc allocates physically contiguous memory, memory which pages are laid consecutively in physical RAM. vmalloc allocates memory which i...(2004-12-30 20:02)

返回顶部