MsgCurrent(), MsgCurrent_r()

Продолжить обработку сообщения

Прототип:

int MsgCurrent( int rcvid );
int MsgCurrent_r( int rcvid );

Аргументы:

rcvid
Идентификатор сообщения, возвращаемый потоку-серверу функцией MsgReceivev*() при приеме сообщения.

Библиотека:

libc

Описание:

MsgCurrent() уведомляет ядро о возобнолении обработки ранее полученного сообщения. Ядро проверяет, что поток-клиент, идентифицируемый rcvid по-прежнему существует и находится в состоянии блокировки по ожиданию ответа (REPLY) на соединении, ассоциированным с данным rcvid.

Если для канала не задан флаг _NTO_CHF_FIXED_PRIORITY, то значение приоритета будет установлено равным приоритету потока-клиента. Если вызвать MsgCurrent() на rcvid, относящемся к низко-приоритетному клиенту, то будет пореряно повышение приоритета, заданное потоку-серверу другим заблокированным высокоприоритетным потоком-клиентом.

Состояния блокировки:

Отсутствует. Однако, если наследование приоритета понизило приоритет потока, вызвавшего функцию, то он может быть вытеснен другими выполняющимися потоками.

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

MsgCurrent()
При ошибке возвращается -1 и устанавливается errno; иначе возвращается 0.
MsgCurrent_r()
Количество прочитанных байт. Эта функция не устанавливает errno. В случае ошибки возвращается значение, указанное в секции Коды ошибок, иначе возвращается 0.

Коды ошибок:

ESRCH
Поток-клиент, ассоциированный с rcvid не находится ни в состоянии STATE_REPLY, ни в состоянии STATE_NET_REPLY, либо не блокирован на соединении, ассоциированном с rcvid.

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

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

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

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

MsgReceivev*(), MsgSendnc(), MsgSendPulse(), MsgSendsv(), MsgSendsvnc(), MsgSendv(), MsgSendvnc(), MsgSendvs(), MsgSendvsnc()




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