Функция предназначена для создания флага. Поле 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);
Разрешен вызов:
В контексте задачи, в пользовательской критической секции, в прерывании
Параметры функции:
evfTN_EVENT. Структура должна быть создана до момента вызова функции, статически или динамическиattr
TN_EVENT_ATTR_MULTI |
флаг может ожидать несколько задач |
TN_EVENT_ATTR_SINGLE |
флаг может ожидать только одна задача |
TN_EVENT_ATTR_CLR |
битовая маска будет сброшена автоматически. Определение может быть объединено по ИЛИ только с TN_EVENT_ATTR_SINGLE |
pattern
Возвращаемые значения:
TERR_WRONG_PARAMTERR_EXSTERR_NO_ERR
Пример вызова:
TN_EVENT event_test; /* Создается флаг, который может ожидать только одна задача с автоматическим сбросом соответствующих битов в битовой маске. Начальное значение битовой маски равно 0x5555 */ tn_event_create(&event_test, TN_EVENT_ATTR_SINGLE | TN_EVENT_ATTR_CLR, 0x5555);