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