Available Languages?:

OSA : OS_IsInCriticalSection

bool OS_IsInCriticalSection ()

Возвращает true, если одна из задач находится в критической секции.

Разрешен вызов:

Везде

Параметры функции:

Нет

Возвращаемое значение:

false Критическая секция не активна
true Одна из задач находится в критической секции

Пример вызова:

void interrupt isr (void)
{
    if (TMR2IF) {
        TMR2IF = 0;
        OS_Timer();
    }
}
 
void main (void)
{
    /*...*/
    for (;;)
    {
         OS_Sched();
         if (OS_IsInCriticalSection () && TMR2IF) {
              TMR2IF = 0;
              OS_Timer();     // Т.к. в критической секции прерывания запрещены,
                              // мы таймер обрабатываем отдельно
         };
        /*...*/
    }
}

См. также

 
osa/ref/allservices/os_isincriticalsection.txt · Последние изменения: 07.10.2010 13:52 (внешнее изменение)
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki