tn_event_create()

Функция предназначена для создания флага. Поле id_event структуры evf должно быть равно нулю до момента создания флага. Таким образом уже созданные флаги защищаются от повторного создания.

Память для управляющей структуры evf должна быть выделена до момента создания флага. Память может быть выделена на этапе компиляции (объявление глобальной переменной типа TN_EVENT), либо динамически, если пользовательское приложение использует менеджер памяти.

Параметр attr определяет тип флага. Если параметр равен TN_EVENT_ATTR_MULTI, то флаг может ожидать несколько задач. Если параметр равен TN_EVENT_ATTR_SINGLE - флаг может ожидать только одна задача. В этом случае допустимо объявление параметра TN_EVENT_ATTR_CLR, который указывает на то, что битовая маска будет сбрасываться автоматически. Параметр TN_EVENT_ATTR_CLR объявляется вместе с параметром TN_EVENT_ATTR_SINGLE: (TN_EVENT_ATTR_SINGLE | TN_EVENT_ATTR_CLR).

Вызов:

TN_RETVAL tn_event_create (TN_EVENT *evf, TN_UWORD attr, TN_UWORD pattern);

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

В контексте задачи, в пользовательской критической секции, в прерывании

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

evf
указатель на структуру флага типа TN_EVENT. Структура должна быть создана до момента вызова функции, статически или динамически
attr
тип флага:

TN_EVENT_ATTR_MULTI флаг может ожидать несколько задач
TN_EVENT_ATTR_SINGLE флаг может ожидать только одна задача
TN_EVENT_ATTR_CLR битовая маска будет сброшена автоматически. Определение может быть объединено по ИЛИ только с TN_EVENT_ATTR_SINGLE

pattern
значение битовой маски сразу после создания флага


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

TERR_WRONG_PARAM
некорректное значение параметра (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)
TERR_EXS
попытка создания флага, который уже создан
TERR_NO_ERR
успешное выполнение


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

TN_EVENT event_test;
 
/* Создается флаг, который может ожидать только одна задача с
   автоматическим сбросом соответствующих битов в битовой
   маске. Начальное значение битовой маски равно 0x5555
*/
tn_event_create(&event_test, TN_EVENT_ATTR_SINGLE | TN_EVENT_ATTR_CLR, 0x5555);



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