Contents Index Search Related Documents Previous Next
H.6 Pragma Partition_Elaboration_Policy
1/2
This clause defines a pragma
for user control over elaboration policy.
Syntax
2/2
The form of
a pragma Partition_Elaboration_Policy
is as follows:
3/2
pragma Partition_Elaboration_Policy
(
policy_identifier);
4/2
The policy_identifier
shall be either Sequential, Concurrent or an implementation-defined identifier.
Post-Compilation Rules
5/2
The pragma
is a configuration pragma. It applies to all compilation units in a partition.
If the Sequential policy is specified for a partition then pragma Restrictions
(No_Task_Hierarchy) shall also be specified for the partition.
Dynamic Semantics
6/2
Notwithstanding what this International Standard
says elsewhere, this pragma allows
partition elaboration rules concerning task activation and interrupt
attachment to be changed. If the policy_identifier
is Concurrent, or if there is no pragma Partition_Elaboration_Policy
defined for the partition, then the rules defined elsewhere in this Standard
apply.
7/2
If the partition
elaboration policy is Sequential, then task activation and interrupt
attachment are performed in the following sequence of steps:
8/2
- The activation of all library-level
tasks and the attachment of interrupt handlers are deferred until all
library units are elaborated.
9/2
- The interrupt handlers are attached
by the environment task.
10/2
- The environment task is suspended
while the library-level tasks are activated.
11/2
- The environment task executes the
main subprogram (if any) concurrently with these executing tasks.
12/2
If several dynamic interrupt handler attachments
for the same interrupt are deferred, then the most recent call of Attach_Handler
or Exchange_Handler determines which handler is attached.
13/2
If any deferred task activation fails, Tasking_Error
is raised at the beginning of the sequence of statements of the body
of the environment task prior to calling the main subprogram.
Implementation Advice
14/2
If the partition elaboration policy is Sequential
and the Environment task becomes permanently blocked during elaboration
then the partition is deadlocked and it is recommended that the partition
be immediately terminated.
Implementation Permissions
15/2
If the partition elaboration policy is Sequential
and any task activation fails then an implementation may immediately
terminate the active partition to mitigate the hazard posed by continuing
to execute with a subset of the tasks being active.
16/2
11 If any deferred task
activation fails, the environment task is unable to handle the Tasking_Error
exception and completes immediately. By contrast, if the partition elaboration
policy is Concurrent, then this exception could be handled within a library
unit.
Contents Index Search Related Documents Previous Next Legal