Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Программные интерфейсы общего назначения > Системные библиотеки > Системные библиотеки > Системная библиотека > M > munmap_flags()



munmap_flags()

Освободить ранее смапированную область памяти, предоставляя больше контроля в сравнении с munmap()

Прототип:

#include <sys/mman.h>
int munmap_flags( void *addr,
size_t len,
unsigned flags );

Аргументы:

addr
Адрес начала области памяти.
len
Длина ресурса в байтах.
flags
Флаги, уточняющие процедуру освобождения памяти:
0
Соответствует поведению функции munmap().
UNMAP_INT_REQUIRED
Регламентированное POSIX зануление страниц требуется при следующем аллоцировании физической памяти, ассоциированной с данной областью памяти.
UNMAP_INT_OPTIONAL
Зануление физической памяти, ассоциированной с данной областью памяти, при следующем аллоцировании опционально.
UNMAP_NOCLEAN
Отключение зануления памяти при выполнении munmap() (см. предупреждение в описании опции -Kz микроядра).
UNMAP_CLEAN
Зануление памяти при выполнении munmap() (соответствует действию опции -Kz микроядра, но не распространяется на всю систему).
UNMAP_DCLEAN
Двойное зануление памяти при выполнении munmap() (соответствует действию опции -Kz,d микроядра, но не распространяется на всю систему). Флаг недействителен без UNMAP_CLEAN.

Библиотека:

libc

Описание:

Функция munmap_flags() удаляет мапирование страниц памяти, начиная с адреса addr и длиной len байт, с округлением вверх до конца страницы памяти. Последующие обращения к этим страницам памяти будут приводить к отправке процессу сигнала SIGSEGV.

Если соответствующих параметрам запроса страниц памяти не обнаружено, вызов munmap_flags() не будет иметь эффекта.

Имеются некоторые взаимодействия аргумента flags с флагом MAP_NOINIT функции mmap(), равно как и с procnto-*, в следующих аспектах:

Возвращаемое значение:

0
Успешное завершение.
-1
Функция завершилась с ошибкой (устанавлено знаение errno).

Коды ошибок:

EINVAL
Адрес в пределах заданного диапазона выходит за границы разрешенного диапазона адресного пространства процесса.
ENOSYS
Функция munmap_flags() не поддерживается в текущей реализации.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

mmap(), mprotect(), munmap(), shm_open(), shm_unlink()

procnto-*




Предыдущий раздел: Описание API системной библиотеки