gpt4 book ai didi

c - vm_area_struct 中的 unsigned long vm_pgoff

转载 作者:太空狗 更新时间:2023-10-29 16:11:50 25 4
gpt4 key购买 nike

我正在阅读 Linux 设备驱动程序的内存管理一章,我遇到了 vm_area_struct 。该结构有一个偏移量字段,即 unsigned long vm_pgoff

我检查了该成员的评论为 /* Offset (within vm_file) in PAGE_SIZE units,*not* PAGE_CACHE_SIZE */ 。我不太确定它是 vma 区域内的偏移量还是内存映射文件中的偏移量。

而且我已经看到驱动程序的 mmap 实现代码具有以下行,通过将成员移动 PAGE_SHIFT 位来重新计算偏移量。

unsigned long off = vma->vm_pgoff << PAGE_SHIFT;

我无法理解相同的内容,对此有任何帮助都将非常有用。

最佳答案

据书Linux Device Drivers, 3rd edition ,

unsigned long vm_pgoff;

The offset of the area in the file, in pages. When a file or device is mapped, this is the file position of the first page mapped in this area.

因此,它是文件/设备中以页数衡量的偏移量。因此,vm_area 中的第一个页面是文件/设备的页面“vm_pgoff”。

文件mm_types.h说的一样。

关于c - vm_area_struct 中的 unsigned long vm_pgoff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29822019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com