2
我給了一個物理地址,特別是0x000000368d76c0
。我正在嘗試將mmap
加入我的程序中。我使用的代碼是爲什麼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;
}
出於某種原因,當我運行這段代碼我得到mmap
失敗。具體來說它說Error Invalid argument
。我很確定這是因爲offset
的價值,但我不知道它有什麼問題。
我將不勝感激任何幫助。
您是否在'mmap()'的參數中用'adddress'指代'address'? – MikeCAT
@MikeCAT我的意思是'offset'參數。 – flashburn
[mmap(2) - Linux手冊頁](http://man7.org/linux/man-pages/man2/mmap.2.html)表示「'offset'必須是返回的頁面大小的倍數'的sysconf(_SC_PAGE_SIZE)'」。你係統中的價值是什麼?參考:[sysconf(3) - Linux手冊頁](http://man7.org/linux/man-pages/man3/sysconf.3.html) – MikeCAT