Функция предназначена для создания флага. Поле 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);