开发者社区> 问答> 正文

Linux内核API内存中分配页,返回物理地址有哪些内容?

已解决

Linux内核API内存中分配页,返回物理地址有哪些内容?

展开
收起
去校区学技术 2022-04-03 12:18:22 1777 0
3 条回答
写回答
取消 提交回答
  • 推荐回答

    内存可以分为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区域分配内存
    
    2022-04-03 12:36:39
    赞同 展开评论 打赏
  • 6

    2022-04-03 12:35:41
    赞同 展开评论 打赏
  • 6

    2022-04-03 12:33:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Debian GNU/Linux 安全合规之路 立即下载
从Linux系统内核层面来解决实际问题的实战经验 立即下载
Linux系统通过fail2ban对暴力破解进行防护 立即下载