~~NOTOC~~
===== tn_sys_enter_critical() =====
Вызов функции запрещает переключение контекста (в том числе и системные прерывания) до тех пор, пока не будет вызвана парная функция [[tnkernel:ref:sys:tn_sys_exit_critical|tn_sys_exit_critical()]].
**Вызов:**
void tn_sys_enter_critical (void);
**Разрешен вызов:** \\
В контексте задачи
**Параметры функции:**
нет
**Возвращаемые значения:**
нет
**Пример вызова:**
long long Global_Variable;
void TN_TASK Task_1 (void *param)
{
for (;;)
{
tn_sys_enter_critical();
Global_Variable = 1255456;
tn_sys_exit_critical();
}
}
void TN_TASK Task_2 (void *param)
{
long long tmp;
for (;;)
{
tn_sem_acquire(&sem_rc, TN_WAIT_INFINITE);
tn_sys_enter_critical();
tmp = Global_Variable;
tn_sys_exit_critical();
if (tmp)
tn_sem_signal(&sem_tr);
}
}
\\
----
[[tnkernel:ref:sys:intro#Системные сервисы|К списку сервисов]]