Функция предназначена для отсылки сообщения data_ptr
через очередь сообщений dque
.
Если очередь задач, ожидающих сообщение не пуста, сервис переводит первую в очереди задачу в состояние готовой к выполнению и передает сообщение data_ptr
в эту задачу, минуя буфер сообщений.
Если ни одна из задач системы не ожидает сообщение, параметр data_ptr
кладется в конец буфера сообщений очереди и задача продолжает выполнение. Если буфер сообщений заполнен, то задача, посылающая сообщение переводится в состояние ожидания до тех пор, пока хотя бы одно сообщение из буфера не будет принято. При этом задача может выйти из ожидания с кодом TERR_TIMEOUT
по истечении timeout
системных тиков.
Вызов:
TN_RETVAL tn_queue_send (TN_DQUE *dque, void *data_ptr, TN_TIMEOUT timeout );
Разрешен вызов:
В контексте задачи
Параметры функции:
dque
data_ptr
timeout
TN_WAIT_INFINITE
, задача, посылающая сообщение будет ожидать освобождения буфера.Возвращаемые значения:
TERR_WRONG_PARAM
TERR_NOEXS
TERR_WCONTEXT
TERR_TIMEOUT
TERR_NO_ERR
Пример вызова:
TN_DQUE queue TN_DATA; MY_MSG message; message.a = 1; message.b = 2; tn_queue_send(&queue, (void*)&message, TN_WAIT_INFINITE);