Справочник Ada 2012
J.15.11 Директивы Priority и Interrupt_Priority
Синтаксис
Форма директивы pragma Priority имеет следующий вид:
pragma Priority (выражение);
Форма директивы pragma Interrupt_Priority имеет следующий вид:
pragma Interrupt_Priority [(выражение);]
Правила разрешения имен
Ожидаемый тип выражения в директивах Priority или Interrupt_Priority — Integer.
Правила допустимости
Директива Priority разрешена только непосредственно внутри определения_задачи, определения_защищенного_объекта или части_объявления тела_подпрограммы. Директива Interrupt_Priority разрешена только непосредственно внутри определения_задачи или определения_защищенного_объекта.
Для директивы Priority, которая появляется в части_объявления тела_подпрограммы, выражение должно быть статическим, и его значение должно быть в диапазоне System.Priority.
Статическая семантика
Для реализации, поддерживающей Приложение D, директива pragma Priority задаёт значение атрибута Priority (см. D.1), а директива pragma Interrupt_Priority задаёт значение атрибута Interrupt_Priority следующим образом:
- Если директива встречается в определении_задачи, то выражение ассоциируется с атрибутом для типа задачи или объявления_одиночной_задачи, содержащим pragma;
- Если директива встречается в определении_защищенного_объекта, то выражение ассоциируется с атрибутом для типа защищенного объекта или объявления_одиночного_защищенного_объекта, содержащим pragma;
- Если директива встречается в части_объявления тела_подпрограммы, то выражение ассоциируется с атрибутом для подпрограммы, содержащей pragma.
Если в директиве Interrupt_Priority нет выражения, атрибут Interrupt_Priority имеет значение Interrupt_Priority'Last.