munmap_peer()

Освободить ранее смаппированную область памяти другого процесса

Прототип:

#include <sys/mman.h>
int munmap_peer( pid_t pid,
void *addr,
size_t len );

Аргументы:

pid
Идентификатор процесса, чьему адресному пространству соответствует адрес addr. В качестве pid может быть задан 0, что соответствует текущему процессу.
addr
Адрес начала области памяти.
len
Длина ресурса в байтах.

Библиотека:

libc

Описание:

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

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

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

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

Коды ошибок:

EINVAL
Адрес в пределах заданного диапазона выходит за границы разрешенного диапазона адресного пространства процесса.
ENOMEM
Менеджер памяти не смог зарезервировать нужное количество памяти, требуемой для обработки запроса munmap_peer(). Эта память требуется для хранения внутренних структур, характеризующих новое состояние адресного пространства процесса.
ENOSYS
Функция munmap_peer() не поддерживается в текущей реализации.

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

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

Поддерживается, начиная с ЗОСРВ «Нейтрино» редакции 2020

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

Предостережения:

В настоящий момент нельзя использовать munmap_peer() для освобождения фрагментов областей памяти, примаппированных функцией mmap64_peer().

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

mmap(), mmap64(), mmap64_peer(), munmap(), munmap_flags(), munmap_flags_peer()




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