Linux kernel 如何读取mmap的返回值

Linux kernel 如何读取mmap的返回值,linux-kernel,mmap,memory-address,Linux Kernel,Mmap,Memory Address,我不熟悉这个话题,我已经复习了3页。如何阅读每一篇文章的内容?我知道我必须使用PAGE_SHIFT,但我不知道如何使用 unsigned int* address = mmap(...) 一些事情,比如跟随 #define PAGE_SIZE 4096 unsigned int * address = mmap(...) unsigned int * page0 = &address[ 0 * PAGE_SIZE / sizeof(int) ]; unsigned int * pa

我不熟悉这个话题,我已经复习了3页。如何阅读每一篇文章的内容?我知道我必须使用PAGE_SHIFT,但我不知道如何使用

unsigned int* address = mmap(...)

一些事情,比如跟随

#define PAGE_SIZE 4096

unsigned int * address = mmap(...)

unsigned int * page0 = &address[ 0 * PAGE_SIZE / sizeof(int) ];
unsigned int * page1 = &address[ 1 * PAGE_SIZE / sizeof(int) ];
unsigned int * page2 = &address[ 2 * PAGE_SIZE / sizeof(int) ];

unsigned int i=address[0]
--有什么问题吗?。如何获取第二页的起始地址?这取决于您使用的体系结构。至于
x86
页面大小为4096。因此,该页面包含
page\u SIZE/sizeof(int)
项目和
page0
指的是
地址[0]
page1
指的是
地址[1024]
page2
指的是
地址[2048]
。谢谢你能解释一下吗?
page\u SIZE/sizeof(int)
为您提供每页的
int
项目数量。因此,每个页面的第一个(零索引)项都有类似于
&address[N*items\u per\u page]
的地址,其中
N
是页面索引。