~~NOTOC~~
===== 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'' : тип флага:
{| class = "fpl"
|-
| ''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);
\\
----
[[tnkernel:ref:event:intro#Сервисы управления флагами|К списку сервисов]]