Available Languages?:

tn_sys_enter_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/tn_sys_enter_critical.txt · Последние изменения: 22.04.2008 00:03 От admin
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki