Available Languages?:

tn_queue_send()

Функция предназначена для отсылки сообщения 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
некорректное значение параметра 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;
 
tn_queue_send(&queue, (void*)&message, TN_WAIT_INFINITE);



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

1) , 2) данный код возврата возможен только в случае использования сервисов с проверкой параметров
 
tnkernel/ref/dqueue/tn_queue_send.txt · Последние изменения: 21.07.2008 00:49 От admin
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki