BDFLUSH
ИМЯ
bdflush − запускает, сбрасывает на диск или настраивает службу записи буферов кэша
ОБЗОР
#include <sys/kdaemon.h>
int bdflush(int func, long *address);
int bdflush(int func, long data);
ОПИСАНИЕ
Замечание: Начиная с Linux 2.6, данный системный вызов считается устаревшим и ничего не делает. Вероятно, он будет удалён в будущих версиях ядра. Сейчас задачу bdflush() выполняет нить ядра pdflush.
bdflush() запускает, сбрасывает на диск или настраивает службу записи буферов кэша. Только процесс с определёнными правами (с мандатом CAP_SYS_ADMIN) может вызвать bdflush().
Если значение func отрицательно или 0, и служба не запущена, то bdflush() запускает службу и не возвращает управление.
Если значение func равно 1, то некоторые «грязные» (dirty) буферы записываются на диск.
Если значение func равно 2 или более и чётно (младший бит равен 0), то в address задаётся адрес ячейки размером с длинное слово, и по этому адресу возвращается для вызывающего процесса параметр настройки с номером (func−2)/2.
Если значение func равно 3 или более и не чётно (младший бит равен 1), то аргумент data является длинным словом, и ядро устанавливает в это значение параметр настройки с номером (func−3)/2.
Набор параметров и разрешённых диапазонов их значений определён в файле fs/buffer.c исходного кода ядра.
ВОЗВРАЩАЕМОЕЗНАЧЕНИЕ
Если аргумент func отрицателен или равен нулю, и служба запускается успешно, то bdflush() не возвращает управление. В противном случае при успешном запуске возвращается ноль, и −1 в случае ошибки, при этом errno устанавливается в соответствующее значение.
ОШИБКИ
|
EBUSY
|
|
Попытка запустить службу, которая уже запущена.
|
|
EFAULT
|
|
address указывает за пределы доступного адресного пространства.
|
|
EINVAL
|
|
Попытка прочитать или записать параметр с неверным номером, или записать неверное значение.
|
|
EPERM
|
|
Вызывающий процесс не имеет мандата CAP_SYS_ADMIN.
|
СООТВЕТСТВИЕСТАНДАРТАМ
Вызов bdflush() присутствует только в Linux и не должен использоваться в переносимых программах.
СМОТРИТЕТАКЖЕ
fsync(2), sync(2), sync(8), update(8)