内存管理API之free_pages
2018-01-16 08:24
253 查看
void free_pages(unsigned long addr, unsigned int order) 用于释放从逻辑地址开始2的order次幂的连续内存. 其源码分析如下: void free_pages(unsigned long addr, unsigned int order) { if (addr != 0) { VM_BUG_ON(!virt_addr_valid((void *)addr)); __free_pages(virt_to_page((void *)addr), order); } } 可见这个函数的的形参addr可以是null,这样的话,这个函数就相当于空函数。其次addr 必须是一个有效 的虚拟地址,如果不是有限的地址,则会打印当前调用free_page的callstack。 最后这个函数的核心是调用__free_pages来释放内存。这里通过virt_to_page将addr转成page.
相关文章推荐
- 内存管理API之__free_pages
- 内存管理API之__get_free_pages
- 内存管理API之free_pages_exact
- 内存管理API之mempool_alloc_pages和mempool_free_pages
- 内存管理API之nr_free_buffer_pages
- 内存管理API之get_user_pages
- 内存管理API之get_user_pages_fast
- 内存管理API之vma_pages
- 内存管理API之mempool_free
- 内存管理API之kmem_cache_free
- 内存管理之bootmem管理之__free_pages_boot_core
- 内存管理API之free_vm_area
- 内存管理API之mempool_alloc_slab和mempool_free_slab
- 内存管理API之alloc_pages
- 内存管理API之alloc_pages_exact
- 内存管理: malloc()与free()的一种基于池表结构的实现
- Linux-0.11内核源码分析系列:内存管理free_page()与free_page_tables()函数分析
- 操作系统动态内存管理——malloc和free的工作机制
- 内存管理API之alloc_vm_area
- new delete与malloc free之内存管理(1)