Руководство по Ada (Ada 2022)
М.1 Конкретные требования к документации
В дополнение к характеристикам, определённым реализацией, каждая реализация Ada должна документировать различные свойства реализации:
- Поведение реализации в ситуациях, определяемых реализацией, должно быть задокументировано — см. М.2 для списка. См. 1.1.3(19).
- Множество значений, которые процедура пользовательского выделения памяти (Allocate) должна принимать для параметра Выравнивание (Alignment). Как выбирается стандартный пул памяти и как память выделяется стандартными пулами памяти. См. 13.11(22/5).
- Алгоритм, используемый для генерации случайных чисел, включая описание его периода. См. A.5.2(44).
- Минимальный интервал времени между вызовами процедуры Reset, зависящей от времени, который гарантированно инициирует различные последовательности случайных чисел. См. A.5.2(45).
- Условия, при которых Io_Exceptions.Name_Error, Io_Exceptions.Use_Error и Io_Exceptions.Device_Error распространяются. См. A.13(15).
- Поведение пакета Environment_Variables при изменении переменных окружения внешними механизмами. См. A.17(30/2).
- Накладные расходы на вызов подпрограмм на машинном коде или встроенных подпрограмм. См. C.1(6).
- Типы и атрибуты, используемые в вставках машинного кода. См. C.1(7).
- Конвенции вызова подпрограмм для всех поддерживаемых идентификаторов конвенций. См. C.1(8/3).
- Сопоставление между Link_Name или указателем Ada и внешним именем ссылки. См. C.1(9).
- Обработка прерываний. См. C.3(22).
- Метрики для обработчиков прерываний. См. C.3.1(16).
- Если политика Ceiling_Locking активна, то значение по умолчанию приоритета потолка для защищённого объекта, который указывает аспект обработчика прерываний. См. C.3.2(24/5).
- Любые обстоятельства, при которых выполнение предварительно обработанного пакета приводит к выполнению кода. См. C.4(12).
- Возможно ли перезапустить партицию без перезагрузки. См. C.4(13).
- Эффект вызова Current_Task из тела входа или обработчика прерываний. См. C.7.1(19).
- Для пакета Task_Attributes, ограничения на количество и размер атрибутов задач и как настроить любые ограничения. См. C.7.2(19).
- Метрики для пакета Task_Attributes. См. C.7.2(27).
- Подробности конфигурации, используемой для генерации значений всех метрик. См. D(2).
- Максимальное обратное инвертирование приоритета задачи пользователя, которое может быть вызвано реализацией. См. D.2.3(12/2).
- Время, в течение которого задача может быть прервана для обработки от имени задач с более низким приоритетом. См. D.2.3(13/2).
- Поддерживаемые значения кванта для планирования по принципу круговой очереди. См. D.2.5(16/2).
- Точность определения исчерпания бюджета задачи при планировании по принципу круговой очереди. См. D.2.5(17/2).
- Любые условия, которые приводят к задержке завершения установления срока выполнения задачи на многопроцессорной системе. См. D.2.6(32/2).
- Любые условия, которые приводят к задержке завершения установки приоритета задачи на многопроцессорной системе. См. D.5.1(12.1/2).
- Метрики для Set_Priority. См. D.5.1(14).
- Метрики для установки приоритета защищённого объекта. См. D.5.2(10).
- На многопроцессорной системе любые условия, которые приводят к задержке завершения прерванного конструкта позже, чем указано для однопроцессорной системы. См. D.6(3).
- Метрики для прерываний. См. D.6(8).
- Значения Time_First, Time_Last, Time_Span_First, Time_Span_Last, Time_Span_Unit и Tick для пакета Real_Time. См. D.8(33).
- Свойства базового временного масштаба, используемого в пакете Real_Time. См. D.8(34).
- Любая синхронизация пакета Real_Time со внешними временными ссылками. См. D.8(35).
- Любые аспекты внешней среды, которые могут вмешиваться в работу пакета Real_Time. См. D.8(36/5).
- Метрики для пакета Real_Time. См. D.8(45).
- Минимальное значение выражения задержки delay_relative_statement, которое приводит к фактической блокировке задачи. См. D.9(7).
- Минимальное различие между значением выражения задержки delay_until_statement и значением Real_Time.Clock, которое приводит к фактической блокировке задачи. См. D.9(8).
- Метрики для инструкций задержки. См. D.9(13).
- Верхняя граница длительности блокировки прерываний, вызванной реализацией. См. D.12(5).
- Метрики для защищённых объектов без входов. См. D.12(12).
- Значения CPU_Time_First, CPU_Time_Last, CPU_Time_Unit и CPU_Tick пакета Execution_Time. См. D.14(21/2).
- Свойства механизма, используемого для реализации пакета Execution_Time, включая значения констант, определённых в пакете. См. D.14(22/2).
- Метрики для времени выполнения. См. D.14(27).
- Метрики для событий времени. См. D.15(24).
- Процессор(ы), на котором обрабатывается прерывание таймера; процессоры, на которых можно обработать каждый Interrupt_Id. См. D.16.1(32).
- Вызывается ли RPC-приёмник из конкурирующих задач и, если да, то количество таких задач. См. E.5(25).
- Любые методы, используемые для уменьшения ошибок отмены в Numerics.Generic_Real_Arrays, должны быть задокументированы. См. G.3.1(86/2).
- Любые методы, используемые для уменьшения ошибок отмены в Numerics.Generic_Complex_Arrays, должны быть задокументированы. См. G.3.2(155/2).
- Если применяется pragma Normalize_Scalars, то неявные начальные значения скалярных подтипов должны быть задокументированы. Такое значение должно быть недопустимым представлением, когда это возможно; любые случаи, когда это не так, должны быть задокументированы. См. H.1(5/2).
- Диапазон эффектов для каждой ограниченной ошибки и каждого неопределённого эффекта. Если эффекты данного ошибочного конструкта ограничены, то ограничения должны быть задокументированы. См. H.2(1/5).
- Для каждой точки проверки должна быть предоставлена карта соответствия между каждым проверяемым объектом и машинными ресурсами, где можно получить значение объекта. См. H.3.2(8).
- Если указан pragma Restrictions(No_Exceptions), то эффекты всех конструкций, где выполняются проверку, определённые языком, должны быть задокументированы. См. H.4(25).
- Прерывания, к которым может быть прикреплён ввод задачи. См. J.7.1(12).
- Тип вызова ввода, вызванный для ввода прерывания. См. J.7.1(13).