tn_queue_send_polling()

Функция предназначена для отсылки сообщения data_ptr через очередь сообщений dque без блокирования вызывающей задачи.

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

Если ни одна из задач системы не ожидает сообщение, параметр data_ptr кладется в конец буфера сообщений очереди и задача продолжает выполнение. Если буфер сообщений заполнен, то функция возвращает код ошибки TERR_TIMEOUT.

Вызов:

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

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

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

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

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


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

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


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

TN_DQUE  queue TN_DATA;
MY_MSG   message;
 
message.a = 1;
message.b = 2;
 
if (tn_queue_send_polling(&queue, (void*)&message) == TERR_NO_ERR)
{
    /* ... */
}



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

1) , 2) данный код возврата возможен только в случае использования сервисов с проверкой параметров