Справочник по Ada 2012
J.15.7 Директивы Interrupt_Handler и Attach_Handler
Синтаксис
Форма директивы pragma Interrupt_Handler:
pragma Interrupt_Handler (handler_name);
Форма директивы pragma Attach_Handler:
pragma Attach_Handler (handler_name, expression);
Правила разрешения имен
Для директив Interrupt_Handler и Attach_Handler имя handler_name должно ссылаться на защищенную процедуру без параметров.
Для директивы Attach_Handler ожидаемый тип выражения — Interrupts.Interrupt_Id (см. C.3.2).
Правила легальности
Директивы Attach_Handler и Interrupt_Handler разрешены только непосредственно внутри protected_definition, где объявлена соответствующая подпрограмма. Соответствующее объявление protected_type_declaration или single_protected_declaration должно быть на уровне библиотеки и не должно быть объявлено внутри тела генерического блока. Помимо мест, где обычно применяются правила легальности (см. 12.3), эти правила также применяются в частях с private-разделом экземпляра генерического модуля.
Статические семантические правила
Для реализации, поддерживающей Приложение C, директива Interrupt_Handler задаёт аспект Interrupt_Handler (см. C.3.1) для защищённой процедуры handler_name со значением True. Для реализации, поддерживающей Приложение C, директива Attach_Handler задаёт аспект Attach_Handler (см. C.3.1) для защищённой процедуры handler_name со значением заданного выражения, вычисленного во время создания объекта.