iofunc_chmod()

Обработать сообщение _IO_CHMOD

Прототип:

#include <sys/iofunc.h>
int iofunc_chmod( resmgr_context_t *ctp,
io_chmod_t *msg,
iofunc_ocb_t *ocb,
iofunc_attr_t *attr );

Аргументы:

ctp
Указатель на структуру resmgr_context_t, которую библиотека менеджера ресурсов использует для передачи контекстной информации между функциями.
msg
Указатель на структуру io_chmod_t, содержащую сообщение, полученное менеджером ресурсов.
ocb
Указатель на структуру блока управления открытым контекстом (OCB) iofunc_ocb_t, созданную при открытии ресурса клиентом.
attr
Указатель на атрибутную запись iofunc_attr_t, описывающую характеристики устройства, связанного с менеджером ресурсов.

Библиотека:

libc

Описание:

Вспомогательная функция iofunc_chmod() реализует POSIX семантику для клиентского вызова chmod(), принимаемого как _IO_CHMOD сообщение менеджером ресурсов.

Функция iofunc_chmod() проверяет наличие у клиента необходимых разрешений для модификации структуры атрибутов функцией chmod(). Если разрешений достаточно, то вызывается chmod() и изменяет поля в структуре ocb->attr. Эта функция обновляет IOFUNC_ATTR_CTIME, IOFUNC_ATTR_DIRTY_TIME и IOFUNC_ATTR_DIRTY_MODE биты в ocb->attr->flags. Можно вызвать iofunc_time_update(), чтобы обновить соответствующие поля времени в ocb->attr.

Можно использовать iofunc_chmod(), например, в менеджере файловой системы, и если было принято сообщение _IO_CHMOD, то файловая система теперь должна записать значения на носитель. Файловая система, возможно, потребует заблокировать поток клиента до тех пор, пока данные не будут фактически записаны на носитель. Можно сравнить этот сценарий с поведением iofunc_chmod_default(), который вызывает этот метод и отвечает клиентскому потоку.

Возвращаемое значение:

EOK
Успешное завершение.
EROFS
Попытка изменить права доступа в файловой системе только для чтения.
EACCES
У клиента нет прав доступа для этой операции.
EPERM
GID или UID владельца не совпадают.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

chmod(), io_chmod_t, iofunc_attr_t, struct stat, iofunc_chmod_default(), iofunc_ocb_t, iofunc_time_update(), resmgr_context_t




Предыдущий раздел: Описание API системной библиотеки