mincore - считывает информацию о частях файла, находящихся в памяти
НАЗВАНИЕmincore - считывает информацию о частях файла, находящихся
в памяти
СИНТАКСИС
#include
#include
int mincore(void *start, size_t length, unsigned char *
vec);
ОПИСАНИЕ
Функция mincore запрашивает вектор, описывающий части
файла, находящихся в памяти, которые можно считать без
доступа к дискам. Ядро будет поддерживать данные для
length байтов с адреса start. При выходе ядро заполнит
vec байтами, в которых наименьший значащий бит определяет
страницу в памяти. Для нормального завершения работы min-
core, start должно указывать на границу страниц.
Вызывающий эту функцию должен позаботиться об округлении
до ближайшей страницы. Параметр length может быть не
кратен размеру страницы. Вектор vec должен быть достаточно
велик для размещения length/PAGE_SIZE байтов. Посмотреть
размер страницы можно по getpagesize(2).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При нормальном завершении работы mincore возвращает ноль.
При ошибках возвращается -1, а переменной errno
присваивается соответствующее значение.
КОДЫ ОШИБОК
EAGAIN ядру временно не хватает ресурсов
EINVAL start не кратно размеру страницы, или len имеет
неположительное значение
EFAULT vec указывет на неправильный адрес
ENOMEM с адреса address по адрес address + length
содержится неразмеченная память, или память не
является частью файла.
НАЙДЕННЫЕ ОШИБКИ
mincore должно возвращать битовый вектор, а не байтовый.
В Linux 2.4.5 невозможно получить информацию о резидентных
страницах, резервно не сохраненных в файлах. Другими
словами, вызов mincore на область, возвращаемую анонимным
mmap(2) не сработает и присвоит errno значение ENOMEM. До
тех пор, пока страницы не заблокированы в памяти,
содержимое vec может зависнуть на то время, пока они не
достигнут пространства пользователя.
СООТВЕТСТВИЕ СТАНДАРТАМ
mincore не соответствует ни стандарту POSIX ни Single Unix
Specification.
ПРЕДЫСТОРИЯ
Функция mincore() впервые появилась в 4.4BSD.
ДОСТУПНОСТЬ
Linux 2.3.99pre1 и glibc 2.2.