我有一个物理地址,具体为0x000000368d76c0
。我想将其映射到我的程序中。我正在使用的代码是:
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;
}
由于某些原因,当我运行这段代码时,
mmap
失败了。具体来说,它显示Error Invalid argument
。我相信这是由于offset
值的问题,但我不知道哪里出了问题。我会感激任何关于此问题的帮助。
mmap()
的参数中所说的adddress
是指address
吗? - MikeCAToffset
参数。 - flashburnoffset
必须是通过sysconf(_SC_PAGE_SIZE)
返回的页面大小的倍数"。在您的系统中,该值是多少?参考:sysconf(3) - Linux manual page - MikeCAT