我需要通过/dev/mem在用户空间遍历mem_map中包含的所有物理页面。不能使用mmap。唯一的希望是使用open/read调用。我知道内核中mem_map的物理地址。以下是用户空间中的代码:
/* open /dev/mem file*/
if((fd = open("/dev/mem", O_RDONLY)) == -1) {
printf("/dev/mem could not be opened.\n");
perror("open");
exit(1);
} else {
printf("/dev/mem opened.\n");
/* seek to the mem_map at mem_map_phy_addr */
if(lseek(fd, mem_map_phy_addr, SEEK_SET) == -1) {
perror("lseek");
}
else {
printf("lseek ok\n");
}
现在的问题是如何开始遍历mem_map?哪个用户空间包含文件有“struct page”?
谢谢。
struct page
。您必须使用内核头文件。 - Dietrich Epp