hp-ux 에서의 mmap
글쓴이: osanha / 작성시간: 화, 2009/01/13 - 3:03오후
mmap 에서 MAP_FIXED 를 사용하여 지정 주소로 맵핑을 할려고 합니다.
코드는 대략 표현하면 다음과 같습니다.
int pageSize = getpagesize(); void* ptr = ((void*) NULL) + pageSize * ADDR_MULTIPLE; size_t size = pageSize * SIZE_MULTIPLE; void* result = mmap(ptr, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, FD, 0);
여기서 MAP_FIXED 를 성공하기 위하여 ADDR_MULTIPLE 는 충분히 크게 잡았습니다. 대략 1024 * 256 정도..
리눅스에서는 잘 됩니다..
헌데 HP-UX v3 (11.31) 에서는 errno EINVAL 에러가 나는군요..
ADDR_MULTIPLE을 1부터 증가시키면서 계속 루프로 돌려봐도 실패만 하네요.
HP-UX 에서는 MAP_FIXED 가 구현되지 않았나요?
Forums:
HP-UX는 전혀 경험이
HP-UX는 전혀 경험이 없기 때문에 뭐라 말씀드리기가 힘들지만, 구현되지 않았다기 보다는 해당 address를 쓸 수 없기 때문에 EINVAL이 발생한 것이 아닐까 합니다.
해당 man page를 보니, HP-UX Series 700/800에서는 모든 프로세스가 한 가상 메모리 공간을 공유하는 형식이기 때문에, MAP_FIXED가 거의 성공하는 일이 없다고 하네요.
다른 시리즈라면 HP-UX에서 EINVAL의 의미를 잘 생각해보기 바랍니다.
http://docs.hp.com/en/B2355-90693/mmap.2.html
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
해당 address를 쓸 수
답글 감사합니다.
HP-UX 에서 꼭 되어야 하는데 거의 안되는것 같아 난감하군요.
댓글 달기