内核空间与用户空间的内存映射

严格来说,对于内核空间不能称为内存映射,应为内存重映射才对,例如将pci设备的内存空间映射到处理器的地址空间,其处理步骤如下:

request_mem_region(start,n,name)

#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))

/**
 * __request_region - create a new busy resource region
 * @parent: parent resource descriptor
 * @start: resource start address
 * @n: resource region size
 * @name: reserving caller's ID string
 */
struct resource * __request_region(struct resource *parent,
  resource_size_t start, resource_size_t n,
  const char *name)

先获取物理空间的访问权限,接着建立重映射的页表

ioremap_nocache

用户空间的映射调用mmap,其实质是调用 remap_pfn_range


两者之间的差别是映射的线性地址空间不同,一个映射到内核空间,供驱动使用,另一个映射到用户空间,供应用进程使用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值