Thursday, March 27, 2008

mremap()

mmap된 영역의 크기를 변경하고 싶을 때는 mremap()을 사용하는데, 아래와 같다.

#include <unistd.h.>
#include <sys/mman.h>

void * mremap (void *addr, size_t old_size, size_t new_size, unsigned log flags);

glibc의 realloc()도 mremap을 사용하여 구현하는 경우가 있다. flag에는 0이나 MREMAP_MAYMOVE를 줄 수 있는데, MAYMOVE를 주면 맵핑된 주소를 커널이 옮겨도 된다는 의미이다(큰파일의 경우 효율을 위해 옮기는 것이 유리할 때가 있다.)

No comments:

Post a Comment