resmgr_msgread()

Прочитать сообщение клиента

Прототип:

#include <sys/resmgr.h>
int resmgr_msgread( resmgr_context_t *ctp,
void *msg,
int size,
int offset );

Аргументы:

ctp
Указатель на структуру resmgr_context_t, которую библиотека менеджера ресурсов использует для передачи контекстной информации между функциями. Данная функция извлекает rcvid из этой структуры.
msg
Указатель на буфер, в котором функция может хранить данные.
bytes
Количество байтов, которое требуется прочитать. Эта функция не позволяет прочитать информацию, находящуюся за пределами сообщения потока; она возвращает количество фактически прочитанных байтов.
offset
Смещение в сообщении отправки потока, которое указывает, откуда необходимо начать чтение данных.

Библиотека:

libc

Описание:

Функция resmgr_msgread() является удобная заменой MsgRead(), которую следует использовать при написании менеджера ресурсов.

Следует использовать resmgr_msgread() при обработке комбинированных сообщений, где смещение остальной части сообщения, которое должно быть прочитано, дополнительно смещается предыдущими элементами комбинированного сообщения.

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

То же, что и у MsgRead(): количество считанных байтов.

Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Коды ошибок:

EFAULT
Произошла ошибка в адресном пространстве сервера при попытке доступа к буферам сообщений вызывающей стороны.
ESRCH
Поток ctp-> rcvid не существует или его соединение прервано.
ESRVRFAULT
Произошла ошибка при попытке ядра получить доступ к предоставленным буферам.

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

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

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

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

MsgRead(), resmgr_context_t, resmgr_msgreadv(), resmgr_msgwrite(), resmgr_msgwritev()




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