fla*_*urn 4 c mmap linux-device-driver linux-kernel
具体来说,我得到了一个实际地址0x000000368d76c0。我正在尝试将mmap其纳入我的程序中。我正在使用的代码是
void *mmap64;
off_t offset = 0x000000368d76c0;
int memFd = open("/dev/mem", O_RDWR);
if (-1 == memFd)
perror("Error ");
mmap64 = mmap(0, sizeof(uint64_t), PROT_WRITE | PROT_READ, MAP_SHARED, memFd, offset);
if (MAP_FAILED == mmap64) {
perror("Error ");
return -1;
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,当我运行此代码时,我遇到了失败mmap。具体是这样说的Error Invalid argument。我很确定这是因为价值offset,但我不知道它有什么问题。
我将不胜感激任何帮助。
offset必须是 返回的页面大小的倍数sysconf(_SC_PAGE_SIZE)。
当页面大小为 4096(x86 CPU 中使用的页面大小)时,0x000000368d76c0不是 4096 的倍数,将被视为无效。
因此,您必须调整偏移量。