Real-Time Programming Languages - Operating Systems

Real-Time Programming Languages - Operating Systems Real-Time Programming Languages - Operating Systems

os.inf.tu.dresden.de
from os.inf.tu.dresden.de More from this publisher
28.02.2014 Views

Example EDF 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 01 01 task A is pragma Priority(5); pragma Relative_Deadline(10); -- gives an initial relative -- deadline of 10 milliseconds end A; task body A is Next_Release: Real_Time.Time; begin Next_Release := Real_Time.Clock; loop -- code Next_Release := Next_Release + Real_Time.Milliseconds(10); Delay_Until_And_Set_Deadline(Next_Release, Real_Time.Milliseconds(10); end loop end A; Finally the dispatching policy must be changed from pragma Task_Dispatching_Policy(FIFO_Within_Priorities); to pragma Task_Dispatching_Policy(EDF_Across_Priorities); Burns, Wellings Ch. 14.3 Page 345 WS 2013/14 Real-Time Systems, Real-Time Prog. Languages / Hermann Härtig 60

Example 01 02 03 04 05 06 07 08 09 10 11 protected Overrun is pragma Priority(Min_Handler_Ceiling); entry Stop_Task; procedure Handler(TM : in out Timer); procedure Reset(C1, C2 : Time_Span); private Abandon : Boolean := False; First_Occurence : Boolean := True; WCET : Time_Span; WCET_Overrun : Time_Span; end Overrun; Burns, Wellings Ch. 15.5 Page 373 WS 2013/14 Real-Time Systems, Real-Time Prog. Languages / Hermann Härtig 61

Example EDF<br />

01<br />

02<br />

03<br />

04<br />

05<br />

06<br />

07<br />

08<br />

09<br />

10<br />

11<br />

12<br />

13<br />

14<br />

15<br />

16<br />

17<br />

18<br />

01<br />

01<br />

task A is<br />

pragma Priority(5);<br />

pragma Relative_Deadline(10);<br />

-- gives an initial relative<br />

-- deadline of 10 milliseconds<br />

end A;<br />

task body A is<br />

Next_Release: <strong>Real</strong>_<strong>Time</strong>.<strong>Time</strong>;<br />

begin<br />

Next_Release := <strong>Real</strong>_<strong>Time</strong>.Clock;<br />

loop<br />

-- code<br />

Next_Release := Next_Release + <strong>Real</strong>_<strong>Time</strong>.Milliseconds(10);<br />

Delay_Until_And_Set_Deadline(Next_Release,<br />

<strong>Real</strong>_<strong>Time</strong>.Milliseconds(10);<br />

end loop<br />

end A;<br />

Finally the dispatching policy must be changed from<br />

pragma Task_Dispatching_Policy(FIFO_Within_Priorities);<br />

to<br />

pragma Task_Dispatching_Policy(EDF_Across_Priorities);<br />

Burns,<br />

Wellings<br />

Ch. 14.3<br />

Page 345<br />

WS 2013/14 <strong>Real</strong>-<strong>Time</strong> <strong>Systems</strong>, <strong>Real</strong>-<strong>Time</strong> Prog. <strong>Languages</strong> / Hermann Härtig 60

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!