我使用 kmap 在Linux内核模块中获取低内存页面的第一个虚拟地址。
如果我在映射后调用 kunmap 会怎样?持久页面映射是完全删除还是只是某些映射计数器减少了? (在取消映射之前应该是2)
答案 0 :(得分:0)
如果页面属于低内存,则kmap没有映射,因此kunmap也没有执行任何操作,但调用它们是无害的,因为这些检查在实现中处理。
首先讲述kmap
kmap检查页面是否低于highmem_start_page(即lowmemory页面)as lowmem中的页面已经可见,不需要映射。如果 页面已经在低内存中kmap只返回它的地址。
现在关于kunmap
kunmap检查页面是否低于highmem_start_page。如果是的话 页面已经存在于低内存中,无需进一步处理,因此nop。