iofunc_link()

Связать две директории

Прототип:

#include <sys/iofunc.h>
int iofunc_link( resmgr_context_t *ctp,
io_link_t *msg,
iofunc_attr_t *attr,
iofunc_attr_t *dattr,
struct _client_info *info );

Аргументы:

ctp
Указатель на структуру resmgr_context_t, которую библиотека менеджера ресурсов использует для передачи контекстной информации между функциями.
msg
Указатель на структуру io_link_t, содержащую сообщение, полученное менеджером ресурсов.
attr
Указатель на атрибутную запись iofunc_attr_t, описывающую характеристики ресурса.
dattr
NULL или указатель на структуру iofunc_attr_t, описывающую характеристики родительского каталога.
info
NULL или указатель на структуру struct _client_info с информацией о клиенте.

Библиотека:

libc

Описание:

Вспомогательная функция iofunc_link() связывает директорию attr с dattr для контекста ctp. Это похоже на функцию iofunc_open():

Функция iofunc_link() проверяет, имеет ли клиент (описываемый необязательным аргументом info) доступ к ресурсу (имя передаётся в структуре msg). Структура attr описывает атрибуты ресурса, а необязательная структура dattr определяет атрибуты родительской директории (например если dattr не равно NULL, это подразумевает, что ресурс, описываемый attr, будет создан в директории, указанной в dattr).

Если передать аргумент info как NULL, то в этом случае функция iofunc_link() сама получит информацию о клиенте через вызов iofunc_client_info(), вернёт эту информацию в info и установит код ошибки. Но, разумеется, эффективнее будет получить информацию о клиенте один раз, а не вызывать эту функцию с NULL каждый раз.

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

EOK
Успешное завершение.
EBADFSYS.
В attr и dattr был передан NULL.
EFAULT
Ошибка при попытке ядра обратиться к буферу info.
EINVAL
Процесс клиента больше не действителен.
ENOSYS
В info был передан NULL.
EPERM
GID или UID не совпадают.

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

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

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

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

struct _client_info, io_link_t, ConnectClientInfo(), iofunc_attr_t, iofunc_client_info(), iofunc_open(), struct _msg_info, resmgr_context_t




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