resmgr_msg_again()

Обработать сообщение повторно в менеджере ресурсов

Прототип:

#include <sys/resmgr.h>
int resmgr_msg_again( resmgr_context_t *ctp,
int rcvid );

Аргументы:

ctp
Указатель на структуру resmgr_context_t, которую библиотека менеджера ресурсов использует для передачи контекстной информации между функциями.
rcvid
Идентификатор получения сообщения, которое необходимо обработать снова.

Библиотека:

libc

Описание:

Функция resmgr_msg_again() повторно обрабатывает сообщение, соответствующее данному rcvid. Это достигается за счет:

Можно использовать данную функцию, если менеджер ресурсов не может сразу обработать сообщение. Например, если операция чтения заблокирована, обработчик io_read сохранит rcvid запроса, а затем вернет _RESMGR_NOREPLY, оставив клиента заблокированным. Позже, когда диспетчер ресурсов сможет обработать запрос, он может вызвать resmgr_msg_again() для повторной обработки сообщения.

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

-1
Возникла ошибка.
0
Успешное завершение.

Коды ошибок:

EFAULT
Произошла ошибка при попытке ядра получить доступ к предоставленным буферам.
ESRCH
Поток rcvid не существует, его соединение было прервано, либо он не находится в состоянии STATE_REPLY или STATE_NET_REPLY, либо он не был заблокирован на соединении, связанном с rcvid.
ESRVRFAULT
Принимающая сторона обнаружила ошибку памяти при доступе к буферу приема/ответа.

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

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

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

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

MsgCurrent(), MsgInfo(), MsgRead(), resmgr_context_t




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