2
실제 주소가 부여되었습니다. 구체적으로는 0x000000368d76c0
입니다. 나는 내 프로그램에 mmap
하려고하고있다. 내가 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;
}
입니다. 특히 Error Invalid argument
라고합니다. 나는 그것이 offset
값이기 때문에 그것이라고 확신하지만, 나는 그것이 무엇이 잘못되었는지 모른다.
감사합니다. mmap(2) - Linux manual page에 따르면
'mmap()'의 인수에서'adddress'에 의해'주소'를 의미합니까? – 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/manage/man3/sysconf.3.html) – MikeCAT