~~NOTOC~~ ===== tn_queue_isend_polling() ===== Функция предназначена для отсылки сообщения ''data_ptr'' через очередь сообщений ''dque'' из прерывания. Если очередь задач, ожидающих сообщение не пуста, сервис переводит первую в очереди задачу в состояние готовой к выполнению и передает сообщение ''data_ptr'' в эту задачу, минуя буфер сообщений. Если ни одна из задач системы не ожидает сообщение, параметр ''data_ptr'' кладется в конец буфера сообщений очереди. Если буфер сообщений заполнен, то функция возвращает код ошибки ''TERR_TIMEOUT''. **Вызов:** TN_RETVAL tn_queue_isend_polling (TN_DQUE *dque, void *data_ptr); **Разрешен вызов:** \\ В прерывании **Параметры функции:** ; ''dque'' : указатель на объект очереди сообщений. ; ''data_ptr'' : указатель на сообщение \\ **Возвращаемые значения:** ; ''TERR_WRONG_PARAM'' : некорректное значение параметра ((данный код возврата возможен только в случае использования сервисов с проверкой параметров)) ; ''TERR_NOEXS'' : попытка обращения к объекту, который не является очередью ((данный код возврата возможен только в случае использования сервисов с проверкой параметров)) ; ''TERR_WCONTEXT'' : вызов сервиса в контексте задачи или в пользовательской критической секции ; ''TERR_TIMEOUT'' : буфер сообщения заполнен, невозможно отослать сообщение ; ''TERR_NO_ERR'' : успешное выполнение \\ **Пример вызова:** extern TN_DQUE queue TN_DATA; extern MY_MSG message; tn_sys_interrupt (_T2Interrupt) /* прерывание от таймера */ { IFS0bits.T2IF = 0; /* сброс флага прерывания */ message.a = 1; message.b = 2; if (tn_queue_isend_polling(&queue, (void*)&message) == TERR_NO_ERR) { /* ... */ } } \\ ---- [[tnkernel:ref:dqueue:intro#Сервисы управления очередями сообщений|К списку сервисов]]