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: Operator/Subscriber 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 task body Telephone_Operator is Workers : constant Integer := 10; Failed : Number; begin loop -- prepare to accept next request select accept Directory_Enquiry(Person : in Name; Addr : in Adress; Num : out Number) do -- look up telephone number and assign the value to Num end Directory_Enquiry; or accept Directory_Enquiry(Person : in Name; Zip : in Postal_Code; Num : out Number) do -- look up telephone number and assign the value to Num end Directory_Enquiry; or accept Report_Fault(Num : Number) do Failed := Num; end Report_Fault; -- log faulty line and allocate repair worker end select; – undertake housekeeping such as logging all calls end loop; end Telephone_Operator; Burns, Wellings Ch. 6.1 Page 99 f. WS 2013/14 Real-Time Systems, Real-Time Prog. Languages / Hermann Härtig 54

Example: Operator/Subscriber 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 task type Subscriber; task body Subscriber is Stuarts_Number : Number; begin loop --... select An_Op.Directory_Enquiry("STUART JONES", "10 MAIN STREET, YORK", Stuarts_Number); -- log the cost of a directory enquiry call or delay 10.0; -- phone up his parents and ask them, -- log the cost of a long distance call end select; --... end loop; end Subscriber; Burns, Wellings Ch. 6.9 Page 119 WS 2013/14 Real-Time Systems, Real-Time Prog. Languages / Hermann Härtig 55

Example: Operator/Subscriber<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 />

19<br />

20<br />

21<br />

22<br />

23<br />

task body Telephone_Operator is<br />

Workers : constant Integer := 10;<br />

Failed : Number;<br />

begin<br />

loop<br />

-- prepare to accept next request<br />

select<br />

accept Directory_Enquiry(Person : in Name;<br />

Addr : in Adress; Num : out Number) do<br />

-- look up telephone number and assign the value to Num<br />

end Directory_Enquiry;<br />

or<br />

accept Directory_Enquiry(Person : in Name;<br />

Zip : in Postal_Code; Num : out Number) do<br />

-- look up telephone number and assign the value to Num<br />

end Directory_Enquiry;<br />

or<br />

accept Report_Fault(Num : Number) do<br />

Failed := Num;<br />

end Report_Fault;<br />

-- log faulty line and allocate repair worker<br />

end select; – undertake housekeeping such as logging all calls<br />

end loop;<br />

end Telephone_Operator;<br />

Burns,<br />

Wellings<br />

Ch. 6.1<br />

Page 99 f.<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 54

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

Saved successfully!

Ooh no, something went wrong!