Dynamic ceiling priorities and Ada 95

Ada 95 provides dynamic priorities for tasks but ceiling priorities for protected objects are statically assigned by means of a pragma. The semantic complexity as well as the potential inefficiency of any resulting implementation seem to have been the main objections to including dynamic ceilings in Ada 95. Nevertheless, in frequent scenarios such as multi-moded real-time systems, it is desirable for ceiling priorities to be dynamic, to accommodate the different priority assignments given to tasks in the different modes. This problem is usually worked around by applying the so-called ceiling of ceilings as a static ceiling for all modes, which may result in lower schedulability as extra blocking potentially occurs. In this paper we investigate on how to use a hypothetical Set_Ceiling dynamic operation, without incurring the risk of semantic ambiguities, and how a multi-moded system can benefit from its existence.