Получить информацию о смапированном блоке памяти другого процесса
#include <sys/mman.h>int mem_offset64_peer( pid_t pid,const void *addr,size_t length,off64_t *offset,size_t *contig_len );
0
, что соответствует текущему процессу.libc
Функция mem_offset64_peer() устанавливают переменной, которая адресуерся указателем offset, значение физического адреса смапированного блока памяти, имеющего в процессе pid виртуальный адрес addr.
Из соображений повышения производительности не рекомендуется повторный вызов mem_offset64_peer() для идентичного набора параметров. Предпочтительным считается независимое кэширование считанных характеристик блока типизированной памяти. |
Значение offset соответствует смещению адреса addr относительно начала файла /dev/mem
(что является физическим адресом блока памяти).
Если объект fd не является типизированным объектом памяти или не соответствует NOFD
вызов завершится с ошибкой.
Функция mem_offset64_peer() (примечание: эти утверждения не проверялись): Вызывает инициализационное копирование или зануление MAP_PRIVATE или MAP_ANON страниц. Возвращает -1 (EACCES ) для MAP_LAZY страниц, память для которых еще не была физически выделена. |
off64_t offset;if ( mem_offset64_peer( 0, addr, -1, &offset, 0 ) == -1 ){/* Error */} else {/* offset contains the physical address of the memory mapped at addr. */}
ЗОСРВ «Нейтрино»
ЗОСРВ
«Нейтрино»
редакции 2020
mmap(), mem_offset(), mem_offset64(), posix_mem_offset(), posix_mem_offset64()
Предыдущий раздел: Описание API системной библиотеки