ERC32 Ada Technical Summary: For mission-critical applications using the ERC32 spacecraft computer | ||
---|---|---|
Prev | Chapter 3. Language-Related Issues | Next |
Tasks, protected types and task-related statements are permitted subject to any explicit restrictions.
Task declarations are only permitted at the library level. Tasks may not be dynamically allocated. Tasks may not terminate.
Protected objects are only permitted at the library level. Protected objects may not be dynamically allocated. The maximum number of entries for a protected object is one. The entry barrier must be a simple Boolean variable, and a maximum of one task may wait on the entry.
The package Ada.Real_Time is provided, and the type Ada.Real_Time.Time may be used in a delay until statement.
The package Ada.Synchronous_Task_Control is provided and offers an alternative and possibly more efficient way for tasks to communicate.
The Ada 83 rendezvous is supported except for the terminate alternative.
Except for the restrictions on the number of tasks in an entry queue and the nested rendezvous (which are checked at run time), the compiler will reject any program that does not conform to the default or given Profile.
The predefined type Duration is 32-bit fixed-point type. The value of the least significant bit is one microsecond. Table 3-3 gives the attributes of this type.
Table 3-3. Attributes of the Predefined Type Duration
Attribute | Value | Comment |
---|---|---|
Duration'Delta | 1.0E-6 | One microsecond |
Duration'Small | 1.0E-6 | One microsecond |
Duration'First | -2147.483648 | Approx. -35 minutes |
Duration'Last | 2147.483647 | Approx. 35 minutes |
The types Time and Time_Span from predefined package Ada.Real_Time have the same representation as type Duration. However the type Time is declared as a modular type and comparisons of two times correctly account for the 71-minute cycle.
ERC32 Ada supports the pragma Volatile, which guarantees that a variable will be fetched from memory each time it is referenced, and will be stored in memory on each assignment.
ERC32 Ada also supports the pragmas Atomic, Atomic_Components, and Volatile_Components, as specified in Section C.6 of the Ada 95 Reference Manual.