OSA : OS_Task_Replace

OS_Task_Replace (priority, TaskName)

Разрешен вызов только в контексте задачи

Заменить текущую задачу на новую. Задача переводится в состояние "не создана", дескриптор текущей задачи освобождается, а на ее место в дескриптор заносится новая задача, ее приоритет и флаги состояния. Изначально новая задача находится в состоянии готовности.

Допускается перезапуск задачей самой себя. Может оказаться полезным для быстрого перезапуска, когда вечному циклу внутри задачи предшествует секция инициализации.

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

Только из задачи

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

priority Приоритет. Может быть от 0 (высший) до 7 (низший)
TaskName Имя функции, которая будет использоваться как задача.

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

Нет

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

void Task2 (void)
{
    for (;;) {
        OS_Yield();
        /*...*/
    }
}
 
void Task1 (void)
{
    char temp;
    for (;;) {
        /*...*/
        // Удаляем текущую задачу и на ее место создаем Task2() с таким же приоритетом
        temp = OS_Task_GetPriority();
        OS_Task_Replace (temp, Task2);
        /*...*/
    }
}

Old style name

OS_ReplaceTask

См. также