READAHEAD(2)

ИМЯ
readahead - упреждающее чтение файла в кэш страниц

ОБЗОР
#define _GNU_SOURCE             /* Смотрите feature_test_macros(7) */
#include <fcntl.h>

ssize_t readahead(int fd, off64_t offset, size_t count);

ОПИСАНИЕ
readahead() заполняет страничный кэш данными из файла таким образом, что последующие операции чтения этого файла не блокируют дисковый ввод-вывод. Аргумент fd — это файловый дескриптор файла для чтения. В аргументе offset указывает начальная точка, от которой нужно читать данные и в count задаётся количество читаемых байт. Ввод-вывод выполняется во все страницы, так что offset эффективно округляется в меньшую сторону к границе страницы и байты читаются до границы следующей страницы, большей или равной (offset+count). readahead() не выполняет чтения за концом файла. readahead() блокирует работу до тех пор, пока данные не будут прочитаны. Текущее смещение файла открытого файла, на который указывает fd, остаётся неизменным.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении readahead() возвращает 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

EBADF
    fd не является допустимым файловым дескриптором или не открыт на чтение.

EINVAL
    fd указывает на файл с типом, который нельзя использовать в readahead().

ВЕРСИИ
Системный вызов readahead() появился в Linux 2.4.13; поддержка в glibc началась с версии 2.3.

СООТВЕТСТВИЕ СТАНДАРТАМ
Системный вызов readahead() есть только в Linux, и не должен использоваться в переносимых приложениях.

СМОТРИТЕ ТАКЖЕ
lseek(2), madvise(2), mmap(2), posix_fadvise(2), read(2)