logo
HCS12 с применением языка С - royallib

8.6.2. Повторная входимость

Тесно связана с концепцией конкуренции проблема повторных входов. Функция считается повторно используемой, если она всегда работает правильно и сохраняет данные даже после прерывания и перезапуска. И снова возникают проблемы, когда задача с низким приоритетом прерывается прежде, чем завершает свою работу функция. Если более высокоприоритетная задача использует ту же самую функцию, функция перезапустится прежде, чем она закончит задачу с более низким приоритетом.

Следующие методы могут использоваться, чтобы создать повторно используемую функцию:

• Запрет на прерывания: Прерывания заблокированы при выполнении критических частей некоторой функции.

• Использование локальных переменных: Вспомним, что локальные переменные хранятся в стеках. Если высокоприоритетная задача выгружает задачу с низким приоритетом, переменные безопасно сохранены в стеке.

• Использование регистров микропроцессора: регистры микропроцессора могут использоваться, чтобы сохранить критические переменные внутри повторно используемой функции. Если функция прервана, переменные автоматически сохраняются в стеке микропроцессора.

• Комбинация методов: чтобы создать повторно используемую функцию, может использоваться комбинация этих методов.