Available Languages?:

tn_queue_receive_polling()

Функция предназначена для приема сообщения через очередь сообщений dque. Принятое сообщение (точнее говоря адрес сообщения) сохраняется по указателю data_ptr. Если в очереди отсутствуют сообщение, то задача не блокируется, а функция возвращает код ошибки TERR_TIMEOUT.

Если буфер очереди сообщений не пуст, функция передает первое сообщение в буфере по указателю data_ptr. Таким образом, после выхода из сервиса data_ptr будет указывать на сообщение, которое было отправлено через очередь. Если есть задача (задачи) ожидающая освобождения буфера для того чтобы отправить сообщение - эта задача будет переведена в состояние готовых к выполнению, а ее сообщение будет положено в очередь.

Вызов:

TN_RETVAL tn_queue_receive_polling (TN_DQUE *dque, void **data_ptr);

Разрешен вызов:

В контексте задачи

Параметры функции:

dque
указатель на объект очереди сообщений.
data_ptr
указатель на указатель, в который сохраняется адрес сообщения


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

TERR_WRONG_PARAM
некорректное значение параметра (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)
TERR_NOEXS
попытка обращения к объекту, который не является очередью (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)
TERR_WCONTEXT
вызов сервиса в пользовательской критической секции или в обработчике прерывания
TERR_TIMEOUT
очередь сообщений пуста
TERR_NO_ERR
успешное выполнение


Пример вызова:

TN_DQUE  queue TN_DATA;    /* очередь сообщений      */
MY_MSG   *message;         /* указатель на сообщение */
 
if (tn_queue_receive_polling(&queue, &message) == TERR_NO_ERR)
{
    if (message->a)
    {
        /* ... */
    }
}



К списку сервисов

 
tnkernel/ref/dqueue/tn_queue_receive_polling.txt · Последние изменения: 05.03.2009 00:00 От admin
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki