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