Форум — Development munmap 0 0 А корректен ли следующий вызов во всяких *nix? munmap(start, ~((size_t) 0)); Т.е. просто указать размер заведомо больший, чем было указано в mmap. Ссылка
В Linux точно нет, т.к. даже len не выровнен по границе страницы. Но даже если указать большой(не настолько в любом случае) выровненный, то ты уверен, что готов к тому, что сделается unmap для того, что выше указанного тобой адреса? Murr ★★ (07.02.05 12:30:15 MSK) Показать ответ Ссылка
Ответ на: комментарий от Murr 07.02.05 12:30:15 MSK 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 ★★★★★ (07.02.05 14:06:18 MSK) Показать ответ Ссылка
Ответ на: комментарий от Die-Hard 07.02.05 14:06:18 MSK len не надо выравнивать постранично. но все равно будет EINVAL, т.к. start + len > TASK_SIZE. idle ★★★★★ (07.02.05 17:58:28 MSK) Показать ответ Ссылка
Ответ на: комментарий от idle 07.02.05 17:58:28 MSK >len не надо выравнивать постранично. my bad. посыпаю прахом башку. Что, кстати, не означает, что в каком-нибудь юниксе подобноо условия нет. >но все равно будет EINVAL, т.к. start + len > TASK_SIZE. об этом я писал в скобках Murr ★★ (07.02.05 20:17:05 MSK) Показать ответ Ссылка
Ответ на: комментарий от Murr 07.02.05 20:17:05 MSK >Что, кстати, не означает, что в каком-нибудь юниксе подобноо условия нет. Хотя, более-менее все стандарты допускают невыровненную длину (при этом адрес обязательно выровнен), так что этой проблемы скорее нет. Murr ★★ (07.02.05 20:24:03 MSK) Ссылка