LINUX.ORG.RU

История изменений

Исправление x22, (текущая версия) :

Если я дёрну munmap на указатель в середине замапленной области с длиной 1,

То есть в середине области длиной 1*PAGE_SIZE? Тогда указатель из середины области не будет кратен PAGE_SIZE.

… будет ли вся страница с этим адресом выдернута из адресного пространства?

Вы, скорее всего, имели в виду «будут ли возвращены системе все mmap()-нутые страницы, содержащие диапазон [address, address+length], где address кратен PAGE_SIZE, а lentgh – произвольное число >= 0?».

Кстати, из линуксового man следует, что munmap() должен сработать при правильном address, даже если length == 0 (upd: то есть удалить 1 страницу с начальным адресом address).

Про length != N*PAGE_SIZE есть в линуксовом man, в OpenBSD, например, нет.

Пример для проверки самому писать лень.

Исходная версия x22, :

Если я дёрну munmap на указатель в середине замапленной области с длиной 1,

То есть в середине области длиной 1*PAGE_SIZE? Тогда указатель из середины области не будет кратен PAGE_SIZE.

… будет ли вся страница с этим адресом выдернута из адресного пространства?

Вы, скорее всего, имели в виду «будут ли возвращены системе все mmap()-нутые страницы, содержащие диапазон [address, address+length], где address кратен PAGE_SIZE, а lentgh – произвольное число >= 0?».

Кстати, из линуксового man следует, что munmap() должен сработать при правильном address, даже если length == 0.

Про length != N*PAGE_SIZE есть в линуксовом man, в OpenBSD, например, нет.

Пример для проверки самому писать лень.