blob: c4c5d648ddfc274497c3b5c7fa6889657bfdb65d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
--
-- Demonstrate Task Priority
--
--
--High: 17
--HighNative: ID=0x0B010004
-- 238
--Low: 16
--LowNative: ID=0x0B010003
-- 239
with Text_IO; use Text_IO;
with Ada.Dynamic_Priorities; use Ada.Dynamic_Priorities;
with System;
with Interfaces.C;
procedure Task_Priority is
procedure Put_Priority is
function getPriority return Interfaces.C.int;
pragma Import (C, getPriority, "getPriority");
begin
Put_Line (Interfaces.C.int'Image (getPriority));
end Put_Priority;
-- I think 16 > 17 to Ada
task Low_Task is
pragma Priority(16);
end Low_Task;
task High_Task is
pragma Priority(17);
end High_Task;
task body High_Task is
begin
Put_Line ( "High: " & System.Any_Priority'Image (Get_Priority));
Put ( "HighNative: " );
Put_Priority;
loop
delay 1.0;
Put_Line ("High - Waking up");
end loop;
end High_Task;
task body Low_Task is
procedure empty;
pragma Import (C, empty, "empty");
begin
Put_Line ( "Low: " & System.Any_Priority'Image (Get_Priority));
Put ( "LowNative: " );
Put_Priority;
delay 0.1;
loop
empty;
end loop;
end Low_Task;
begin
NULL;
end Task_Priority;
|