Linux内核API内存中分配页,返回物理地址有哪些内容?
内存可以分为ZONE_DMA、ZONE_DMA32、ZONE_NORMAL、ZONE_HIGHMEM、ZONE_MOVABLE几种,但ARM对DMA访问没有范围限制,因此一般只考虑高端或者非高端区域
struct page *alloc_pages(gfp_t gfp_mask, unsigned int order) 获取2的order次方个页
alloc_page(gfp_mask) 对alloc_pages的封装,order=0
void __free_pages(strcut page *page, unsinged int order)
GFP_ATOMIC 防止发生进程上下文调度,常用于中断和自旋锁上下文
GPF_KERNEL 从常用内存分配,有线从ZONE_NORMAL区域分配
GFP_USER 为用户空间分配内存页
GFP_DMA 优先从ZONE_DMA区分配内存,对于ARM,内存区域没有限制
__GFP_HIGHMEM 有线从ZONE_HIGHMEM区域分配内存
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。