Разблокировать клиента и установить для него статус ошибки
#include <sys/neutrino.h>int MsgError( int rcvid,int error );int MsgError_r( int rcvid,int error );
libc
Функции MsgError() и MsgError_r() выполняют разблокирование клиента, вызвавшего MsgSend*(), и устанавливают errno клиента в значение error. При это передача данных не осуществляется.
Если error имеет значение EOK
, то функция MsgSend*() возвращиет EOK
; Если error имеет любое другое значение, то функция MsgSend*() возращает -1
.
Данные функции идентичны за исключением способа возврата ошибок.
![]() | Если задать код ошибки ERESTART , то отправитель немедленно выполнит повторный вызов MsgSend*(). Поскольку буферы отправки (send) и ответа (reply), передаваемые в MsgSend() могут перекрывать друг друга, не следует использовать ERESTART после вызова MsgWrite(). |
Отсутствует. В случае сетевого взаимодействия может получить управление поток с меньшим приоритетом.
MsgError() имеет повышенную задержку при сетевом взаимодействии, поскольку в этом случае сервер записывает код ошибки в свой локальный lsm-qnet.so
, который затем должен взаимодействовать с клиентским lsm-qnet.so
для реальной передачи кода ошибки.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
ЗОСРВ «Нейтрино»
ChannelCreate(), MsgRead(), MsgReadv(), MsgReceive(), MsgReceivev(), MsgSend(), MsgSendv(), MsgWrite()
Предыдущий раздел: Описание API системной библиотеки