Next: , Previous: D.2.3, Up: D.2


D.2.4 Non-Preemptive Dispatching

1/2
This clause defines a non−preemptive task dispatching policy.

Static Semantics

2/2
The policy_identifier Non_Preemptive_FIFO_Within_Priorities is a task dispatching policy.

Legality Rules

3/2
Non_Preemptive_FIFO_Within_Priorities shall not be specified as the policy_identifier of pragma Priority_Specific_Dispatching (see D.2.2).

Dynamic Semantics

4/2
When Non_Preemptive_FIFO_Within_Priorities is in effect, modifications to the ready queues occur only as follows:

5/2

6/2

7/2

8/2

9/2
For this policy, a non−blocking delay_statement is the only non−blocking event that is a task dispatching point (see D.2.1).

Implementation Requirements

10/2
An implementation shall allow, for a single partition, both the task dispatching policy to be specified as Non_Preemptive_FIFO_Within_Priorities and also the locking policy (see D.3) to be specified as Ceiling_Locking.

Implementation Permissions

11/2
Since implementations are allowed to round all ceiling priorities in subrange System.Priority to System.Priority'Last (see D.3), an implementation may allow a task to execute within a protected object without raising its active priority provided the associated protected unit does not contain pragma Interrupt_Priority, Interrupt_Handler, or Attach_Handler.