LINUX.ORG.RU

munmap


0

0

А корректен ли следующий вызов во всяких *nix?

munmap(start, ~((size_t) 0));

Т.е. просто указать размер заведомо больший, чем было указано в mmap.

anonymous

В Linux точно нет, т.к. даже len не выровнен по границе страницы. Но даже если указать большой(не настолько в любом случае) выровненный, то ты уверен, что готов к тому, что сделается unmap для того, что выше указанного тобой адреса?

Murr ★★
()
Ответ на: комментарий от Murr

2Murr (07.02.2005 12:30:15):

> В Linux точно нет, т.к. даже len не выровнен по границе страницы.

А зачем длине быть выровненной по странице? Насколько я понимаю, такое отммапит корректно весь первоначальный мап:

void *ptr=mman(0, 2*getpagesize(), ...);

. . .

munmap(ptr, getpagesize()+1);

Так, по крайней мере, в мануале написано:

All pages containing _a_part_ of the indicated range are unmapped

Die-Hard ★★★★★
()
Ответ на: комментарий от idle

>len не надо выравнивать постранично.

my bad. посыпаю прахом башку. Что, кстати, не означает, что в каком-нибудь юниксе подобноо условия нет.

>но все равно будет EINVAL, т.к. start + len > TASK_SIZE.

об этом я писал в скобках

Murr ★★
()
Ответ на: комментарий от Murr

>Что, кстати, не означает, что в каком-нибудь юниксе подобноо условия нет.

Хотя, более-менее все стандарты допускают невыровненную длину (при этом адрес обязательно выровнен), так что этой проблемы скорее нет.

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.