asyncmsg_get()

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

Прототип:

#include <sys/asyncmsg.h>
struct _asyncmsg_get_header * asyncmsg_get( int chid );

Аргументы:

chid
Идентификатор канала.

Библиотека:

libasyncmsg

Описание:

Функция asyncmsg_get() получает до пяти асинхронных сообщений из канала, указанного аргументом chid. Чтобы получать больше сообщений, следует вызывать эту функцию в цикле, пока функция не вернет NULL и не установит errno в EAGAIN чтобы обозначить, что очередь сообщений исчерпана.


Note: Потоки, получающие асинхронные сообщения, не наследуют приоритет отправителя.

Если вы предоставили функцию обратного вызова при вызове asyncmsg_channel_create(), asyncmsg_get() вызывает функцию обратного вызова, чтобы выделить место для сообщения; в противном случае asyncmsg_get() использует malloc().

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

Указатель на связанный список структур _asyncmsg_get_header, содержащих полученные сообщения. Если возникла ошибка функция возвращает NULL, код ошибки записывается в errno.


Note: Следует освободить этот список от заголовков, когда закончите с ними.

Коды ошибок:

EBADF
Канал chid не существует.
EFAULT
Произошла ошибка, когда ядро попыталось получить доступ к предоставленным буферам.
EMSGSIZE
Предоставленный буфер недостаточно велик для хранения полученного сообщения.
EAGAIN
В настоящее время нет доступных сообщений.

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

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

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

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

struct _asyncmsg_get_header, asyncmsg_channel_create(), asyncmsg_channel_destroy(), asyncmsg_connect_attach(), asyncmsg_connect_attr(), asyncmsg_connect_detach(), asyncmsg_flush(), asyncmsg_free(), asyncmsg_malloc(), asyncmsg_put(), asyncmsg_putv()

Примеры использования и сведения об архитектуре библиотеки доступны в разделе общие сведения.




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