Справочник по Ada (Ada 2022)
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 следующим образом:
- Если директива находится в определении_задачи, то выражение ассоциируется с атрибутом типа задачи или объявления_одной_задачи, содержащего данную директиву;
- Если директива находится в определении_защищенного_объекта, то выражение ассоциируется с атрибутом типа защищенного объекта или объявления_одного_защищенного_объекта, содержащего данную директиву;
- Если директива находится в разделе_объявлений тела_подпрограммы, то выражение ассоциируется с атрибутом подпрограммы, содержащей данную директиву.
Если выражение отсутствует в директиве Interrupt_Priority, то атрибут Interrupt_Priority имеет значение Interrupt_Priority'Last.