Ich muss alle in mem_map enthaltenen physischen Seiten im Userspace über /dev/mem durchlaufen. mmap kann nicht verwendet werden. Die einzige Hoffnung ist, open/read-Aufrufe zu verwenden. Ich kenne die physikalische Adresse von mem_map im Kernel. Dies ist der Code im Benutzerbereich:
/* 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");
}
Nun stellt sich die Frage, wie man mit dem Durchlaufen der mem_map beginnt? Welche Benutzerland-Include-Datei hat die "struct page"?
Gracias.
0 Stimmen
Userland-Include-Dateien haben keine
struct page
. Sie müssen Kernel-Header verwenden.0 Stimmen
Können Sie das genauer erläutern? Wie verwende ich Kernel-Header? Kopiere ich die Header-Datei, um sie mit meinem Benutzerprogramm zu kompilieren?