Specific Documentation Requirements
Author: JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor

Ada Reference Manual — Legal Information

# M.1 Specific Documentation Requirements

1/2
In addition to implementation-defined characteristics, each Ada implementation must document various properties of the implementation:
2/2

- The behavior of implementations in implementation-defined situations shall be documented — see M.2, “Implementation-Defined Characteristics” for a listing. See 1.1.3(19).

3/2

- The set of values that a user-defined Allocate procedure needs to accept for the Alignment parameter. How the standard storage pool is chosen, and how storage is allocated by standard storage pools. See 13.11(22).

4/2

- The algorithm used for random number generation, including a description of its period. See A.5.2(44).

5/2

- The minimum time interval between calls to the time-dependent Reset procedure that is guaranteed to initiate different random number sequences. See A.5.2(45).

6/2

- The conditions under which Io_Exceptions.Name_Error, Io_Exceptions.Use_Error, and Io_Exceptions.Device_Error are propagated. See A.13(15).

7/2

- The behavior of package Environment_Variables when environment variables are changed by external mechanisms. See A.17(30/2).

8/2

- The overhead of calling machine-code or intrinsic subprograms. See C.1(6).

9/2

- The types and attributes used in machine code insertions. See C.1(7).

10/2

- The subprogram calling conventions for all supported convention identifiers. See C.1(8).

11/2

- The mapping between the Link_Name or Ada designator and the external link name. See C.1(9).

12/2

- The treatment of interrupts. See C.3(22).

13/2

- The metrics for interrupt handlers. See C.3.1(16).

14/2

- If the Ceiling_Locking policy is in effect, the default ceiling priority for a protected object that contains an interrupt handler pragma. See C.3.2(24/2).

15/2

- Any circumstances when the elaboration of a preelaborated package causes code to be executed. See C.4(12).

16/2

- Whether a partition can be restarted without reloading. See C.4(13).

17/2

- The effect of calling Current_Task from an entry body or interrupt handler. See C.7.1(19).

18/2

- For package Task_Attributes, limits on the number and size of task attributes, and how to configure any limits. See C.7.2(19).

19/2

- The metrics for the Task_Attributes package. See C.7.2(27).

20/2

- The details of the configuration used to generate the values of all metrics. See D(2).

21/2

- The maximum priority inversion a user task can experience from the implementation. See D.2.3(12/2).

22/2

- The amount of time that a task can be preempted for processing on behalf of lower-priority tasks. See D.2.3(13/2).

23/2

- The quantum values supported for round robin dispatching. See D.2.5(16/2).

24/2

- The accuracy of the detection of the exhaustion of the budget of a task for round robin dispatching. See D.2.5(17/2).

25/2

- Any conditions that cause the completion of the setting of the deadline of a task to be delayed for a multiprocessor. See D.2.6(32/2).

26/2

- Any conditions that cause the completion of the setting of the priority of a task to be delayed for a multiprocessor. See D.5.1(12.1/2).

27/2

- The metrics for Set_Priority. See D.5.1(14).

28/2

- The metrics for setting the priority of a protected object. See D.5.2(10).

29/2

- On a multiprocessor, any conditions that cause the completion of an aborted construct to be delayed later than what is specified for a single processor. See D.6(3).

30/2

- The metrics for aborts. See D.6(8).

31/2

- The values of Time_First, Time_Last, Time_Span_First, Time_Span_Last, Time_Span_Unit, and Tick for package Real_Time. See D.8(33).

32/2

- The properties of the underlying time base used in package Real_Time. See D.8(34).

33/2

- Any synchronization of package Real_Time with external time references. See D.8(35).

34/2

- Any aspects of the external environment that could interfere with package Real_Time. See D.8(36/1).

35/2

- The metrics for package Real_Time. See D.8(45).

36/2

- The minimum value of the delay expression of a delay_relative_statement that causes a task to actually be blocked. See D.9(7).

37/2

- The minimum difference between the value of the delay expression of a delay_until_statement and the value of Real_Time.Clock, that causes the task to actually be blocked. See D.9(8).

38/2

- The metrics for delay statements. See D.9(13).

39/2

- The upper bound on the duration of interrupt blocking caused by the implementation. See D.12(5).

40/2

- The metrics for entry-less protected objects. See D.12(12).

41/2

- The values of CPU_Time_First, CPU_Time_Last, CPU_Time_Unit, and CPU_Tick of package Execution_Time. See D.14(21/2).

42/2

- The properties of the mechanism used to implement package Execution_Time. See D.14(22/2).

43/2

- The metrics for execution time. See D.14(27).

44/2

- The metrics for timing events. See D.15(24).

45/2

- Whether the RPC-receiver is invoked from concurrent tasks, and if so, the number of such tasks. See E.5(25).

46/2

- Any techniques used to reduce cancellation errors in Numerics.Generic_Real_Arrays shall be documented. See G.3.1(86/2).

47/2

- Any techniques used to reduce cancellation errors in Numerics.Generic_Complex_Arrays shall be documented. See G.3.2(155/2).

48/2

- If a pragma Normalize_Scalars applies, the implicit initial values of scalar subtypes shall be documented. Such a value should be an invalid representation when possible; any cases when is it not shall be documented. See H.1(5/2).

49/2

- The range of effects for each bounded error and each unspecified effect. If the effects of a given erroneous construct are constrained, the constraints shall be documented. See H.2(1).

50/2

- For each inspection point, a mapping between each inspectable object and the machine resources where the object's value can be obtained shall be provided. See H.3.2(8).

51/2

- If a pragma Restrictions(No_Exceptions) is specified, the effects of all constructs where language-defined checks are still performed. See H.4(25).

52/2

- The interrupts to which a task entry may be attached. See J.7.1(12).

53/2

- The type of entry call invoked for an interrupt entry. See J.7.1(13).

Sponsored by Ada-Europe