with Text_IO; use Text_IO; with Ada.Text_IO, Ada.Integer_Text_IO; use Ada.Text_IO, Ada.Integer_Text_IO; with Translate; use Translate; with unbounded_strings; use unbounded_strings; with Scheduler; use Scheduler; with Scheduling_Analysis; use Scheduling_Analysis; use Scheduling_Analysis.Double_Tasks_Parameters_Package; with Tasks; use Tasks; use Tasks.Generic_Task_List_Package; with Task_Set; use Task_Set; with Task_Group_Set; use Task_Group_Set; with Task_Groups; use Task_Groups; with Feasibility_Test.Wort_Case_Response_Time; use Feasibility_Test.Wort_Case_Response_Time; with Tmp_Transaction; use Tmp_Transaction; with Tmp_Task; use Tmp_Task; with Ada.Numerics.Discrete_Random; procedure feastest is package Fix_IO is new Ada.Text_IO.Fixed_IO(DAY_DURATION); use Fix_IO; My_Task_Groups : Task_Groups_Set; My_Task_Groups2: Task_Groups_Set; My_Task_Groups3: Task_Groups_Set; TransP : Transaction_Ptr; TransP2 : Transaction_Ptr; Trans1, Trans2, Trans3 : Transaction_Ptr; A, B, C, D, E, F : PTask_Ptr; Oa, Ob, Oc, Od, Oe, O_f : Offset_Type; ILoop : integer; a_core : core_unit_ptr; a_core_unit_table : core_units_table; A1, A2, A3, A4, B1, B2, B3, B4, C1, C2, D1, E1, F1 : PTask_Ptr; Oa1, Oa2, Oa3, Oa4, Ob1, Ob2, Ob3, Ob4, Oc1, Oc2, Od1, Oe1, O_f1 : Offset_Type; A0, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31, A32, A33, A34, A35, A36, A37, A38, A39, A40, A41, A42, A43, A44, A45, A46, A47, A48, A49, A50, A51, A52, A53, A54, A55, A56, A57, A58, A59, A60, A61, A62, A63, A64, A65, A66, A67, A68, A69, A70, A71, A72, A73, A74, A75, A76, A77, A78, A79, A80, A81, A82, A83, A84, A85, A86, A87, A88, A89, A90, A91, A92, A93, A94, A95, A96 : PTask_Ptr; OA0, OA5, OA6, OA7, OA8, OA9, OA10, OA11, OA12, OA13, OA14, OA15, OA16, OA17, OA18, OA19, OA20, OA21, OA22, OA23, OA24, OA25, OA26, OA27, OA28, OA29, OA30, OA31, OA32, OA33, OA34, OA35, OA36, OA37, OA38, OA39, OA40, OA41, OA42, OA43, OA44, OA45, OA46, OA47, OA48, OA49, OA50, OA51, OA52, OA53, OA54, OA55, OA56, OA57, OA58, OA59, OA60, OA61, OA62, OA63, OA64, OA65, OA66, OA67, OA68, OA69, OA70, OA71, OA72, OA73, OA74, OA75, OA76, OA77, OA78, OA79, OA80, OA81, OA82, OA83, OA84, OA85, OA86, OA87, OA88, OA89, OA90, OA91, OA92, OA93, OA94, OA95, OA96: Offset_Type; Processor_Name : Unbounded_String; Msg : Unbounded_String; Response_Time : Response_Time_Table; Response_Time2 : Response_Time_Table; Response_Time3 : Response_Time_Table; Sys, Sys2, Sys3 : System; dummy : Unbounded_String_List; Year,Month,Day : INTEGER; Start,Seconds : DAY_DURATION; Time_And_Date : TIME; procedure print_result(R_Table : Response_Time_Table) is begin put_line("Pri Deadline Response time"); for i in 0..(R_Table.nb_entries-1) loop put(Natural'Image(Natural(Generic_Task_Ptr(R_Table.entries(i).item).priority))); put(" "); put(Natural'Image(Natural(Generic_Task_Ptr(R_Table.entries(i).item).deadline))); put(" "); put(Natural'Image(Natural(R_Table.entries(i).data))); if (Double (Generic_Task_Ptr(R_Table.entries(i).item).deadline) >= R_Table.entries(i).data) then put_line(" Passed"); else put_line(" Failed"); end if; end loop; put_line(""); put_line(""); end print_result; procedure fake_random_taskset is i, c, o: integer; type Rand_Range is range 0..9; package Rand_Int is new Ada.Numerics.Discrete_Random(Rand_Range); seed : Rand_Int.Generator; Num : Rand_Range; begin c := 10; o := 0; Rand_Int.Reset(seed); i := 0; loop put("A"); put(Integer'Image(i)); put(", "); exit when i >= 99; i := i + 1; end loop; put("A100 : PTask_Ptr;"); put_line(""); put_line(""); i := 0; loop put("OA"); put(Integer'Image(i)); put(", "); exit when i >= 99; i := i + 1; end loop; put("OA100 : Offset_Type;"); put_line(""); put_line(""); i := 0; loop put("-- Initialize Task A"); put_line(Integer'Image(i)); put("A");put(Integer'Image(i));put_line(" := new PTask;"); put("A");put(Integer'Image(i));put(".Name := To_Unbounded_String(""A"); put(Integer'Image(i)); put_line(""");"); put("A");put(Integer'Image(i));put_line(".cpu_name := To_Unbounded_String(""processor1"");"); put("A");put(Integer'Image(i));put_line(".address_space_name := To_Unbounded_String(""addr1"");"); put("A");put(Integer'Image(i));put_line(".period := 30000;"); put("A");put(Integer'Image(i));put(".capacity := "); put(Integer'Image(c)); put_line(";"); put("A");put(Integer'Image(i));put_line(".deadline := 30000;"); put("A");put(Integer'Image(i));put(".priority := "); put(Integer'Image(i)); put_line(";"); put("A");put(Integer'Image(i));put_line(".blocking_time := 0;"); put("A");put(Integer'Image(i));put_line(".jitter := 0;"); put("A");put(Integer'Image(i));put_line(".every := 1;"); put("OA");put(Integer'Image(i));put(".offset_value := "); put(Integer'Image(o)); put_line(";"); put("add(A");put(Integer'Image(i));put(".offsets, Oa"); put(Integer'Image(i)); put_line(");"); put("add(TransP.task_list, Generic_Task_Ptr (A");put(Integer'Image(i));put_line("));"); put("Sys.Tasks.add(Generic_Task_Ptr (A");put(Integer'Image(i));put_line("));"); exit when i >= 100; i := i + 1; o := o + c; Num := Rand_Int.Random(seed); c := c + Integer(Num); end loop; end fake_random_taskset; begin -- fake_random_taskset; Initialize(Sys); Initialize(Sys2); Initialize(Sys3); ----------------------------------------------------------------------------- -- -- Example #1: Audsley (The end of the line) -- ----------------------------------------------------------------------------- Processor_Name := To_Unbounded_String ("p1"); TransP := new Transaction; TransP.period := 30000; Add_core_unit (sys.core_units, a_core, to_unbounded_string("core1"), preemptive, 0, 1.0, 0, 0, 0, to_unbounded_string(""), DEADLINE_MONOTONIC_PROTOCOL); add(a_core_unit_table, a_core); add_processor(sys.processors, to_unbounded_string("processor1"), to_unbounded_string("a_network"), a_core_unit_table, time_unit_migration_type); Add_Address_Space(sys.address_spaces, to_unbounded_string("addr1"), to_unbounded_string("processor1"), 0, 0, 0, 0); -- -- Initialize Task A -- A := new PTask; -- A.Name := To_Unbounded_String("A"); -- A.cpu_name := To_Unbounded_String("processor1"); -- A.address_space_name := To_Unbounded_String("addr1"); -- A.period := 161; -- A.capacity := 30; -- A.deadline := 110; -- A.priority := 5; -- A.blocking_time := 0; -- A.jitter := 0; -- A.every := 1; -- Oa.offset_value := 51; -- add(A.offsets, Oa); -- -- -- Initialize Task B -- B := new PTask; -- B.Name := To_Unbounded_String("B"); -- B.cpu_name := To_Unbounded_String("processor1"); -- B.address_space_name := To_Unbounded_String("addr1"); -- B.period := 161; -- B.capacity := 30; -- B.deadline := 40; -- B.priority := 1; -- B.blocking_time := 0; -- B.jitter := 0; -- B.every := 1; -- Ob.offset_value := 11; -- add(B.offsets, Ob); -- -- -- Initialize Task C -- C := new PTask; -- C.Name := To_Unbounded_String("C"); -- C.cpu_name := To_Unbounded_String("processor1"); -- C.address_space_name := To_Unbounded_String("addr1"); -- C.period := 161; -- C.capacity := 30; -- C.deadline := 30; -- C.priority := 3; -- C.blocking_time := 0; -- C.jitter := 0; -- C.every := 1; -- Oc.offset_value := 60; -- add(C.offsets, Oc); -- -- -- Initialize Task D -- D := new PTask; -- D.Name := To_Unbounded_String("D"); -- D.cpu_name := To_Unbounded_String("processor1"); -- D.address_space_name := To_Unbounded_String("addr1"); -- D.period := 161; -- D.capacity := 10; -- D.deadline := 59; -- D.priority := 2; -- D.blocking_time := 0; -- D.jitter := 0; -- D.every := 1; -- Od.offset_value := 41; -- add(D.offsets, Od); -- -- -- Initialize Task E -- E := new PTask; -- E.Name := To_Unbounded_String("E"); -- E.cpu_name := To_Unbounded_String("processor1"); -- E.address_space_name := To_Unbounded_String("addr1"); -- E.period := 161; -- E.capacity := 50; -- E.deadline := 50; -- E.priority := 4; -- E.blocking_time := 0; -- E.jitter := 0; -- E.every := 1; -- Oe.offset_value := 90; -- add(E.offsets, Oe); -- add(TransP.task_list, Generic_Task_Ptr (A)); -- add(TransP.task_list, Generic_Task_Ptr (B)); -- add(TransP.task_list, Generic_Task_Ptr (C)); -- add(TransP.task_list, Generic_Task_Ptr (D)); -- add(TransP.task_list, Generic_Task_Ptr (E)); -- -- Sys.Tasks.add(Generic_Task_Ptr (A)); -- Sys.Tasks.add(Generic_Task_Ptr (B)); -- Sys.Tasks.add(Generic_Task_Ptr (C)); -- Sys.Tasks.add(Generic_Task_Ptr (D)); -- Sys.Tasks.add(Generic_Task_Ptr (E)); -- Initialize Task A0 A0 := new PTask; A0.Name := To_Unbounded_String("A0"); A0.cpu_name := To_Unbounded_String("processor1"); A0.address_space_name := To_Unbounded_String("addr1"); A0.period := 30000; A0.capacity := 10; A0.deadline := 30000; A0.priority := 0; A0.blocking_time := 0; A0.jitter := 0; A0.every := 1; OA0.offset_value := 0; add(A0.offsets, OA0); add(TransP.task_list, Generic_Task_Ptr (A0)); Sys.Tasks.add(Generic_Task_Ptr (A0)); -- Initialize Task A1 A1 := new PTask; A1.Name := To_Unbounded_String("A1"); A1.cpu_name := To_Unbounded_String("processor1"); A1.address_space_name := To_Unbounded_String("addr1"); A1.period := 30000; A1.capacity := 18; A1.deadline := 30000; A1.priority := 1; A1.blocking_time := 0; A1.jitter := 0; A1.every := 1; OA1.offset_value := 10; add(A1.offsets, OA1); add(TransP.task_list, Generic_Task_Ptr (A1)); Sys.Tasks.add(Generic_Task_Ptr (A1)); -- Initialize Task A2 A2 := new PTask; A2.Name := To_Unbounded_String("A2"); A2.cpu_name := To_Unbounded_String("processor1"); A2.address_space_name := To_Unbounded_String("addr1"); A2.period := 30000; A2.capacity := 26; A2.deadline := 30000; A2.priority := 2; A2.blocking_time := 0; A2.jitter := 0; A2.every := 1; OA2.offset_value := 28; add(A2.offsets, OA2); add(TransP.task_list, Generic_Task_Ptr (A2)); Sys.Tasks.add(Generic_Task_Ptr (A2)); -- Initialize Task A3 A3 := new PTask; A3.Name := To_Unbounded_String("A3"); A3.cpu_name := To_Unbounded_String("processor1"); A3.address_space_name := To_Unbounded_String("addr1"); A3.period := 30000; A3.capacity := 28; A3.deadline := 30000; A3.priority := 3; A3.blocking_time := 0; A3.jitter := 0; A3.every := 1; OA3.offset_value := 54; add(A3.offsets, OA3); add(TransP.task_list, Generic_Task_Ptr (A3)); Sys.Tasks.add(Generic_Task_Ptr (A3)); -- Initialize Task A4 A4 := new PTask; A4.Name := To_Unbounded_String("A4"); A4.cpu_name := To_Unbounded_String("processor1"); A4.address_space_name := To_Unbounded_String("addr1"); A4.period := 30000; A4.capacity := 35; A4.deadline := 30000; A4.priority := 4; A4.blocking_time := 0; A4.jitter := 0; A4.every := 1; OA4.offset_value := 82; add(A4.offsets, OA4); add(TransP.task_list, Generic_Task_Ptr (A4)); Sys.Tasks.add(Generic_Task_Ptr (A4)); -- Initialize Task A5 A5 := new PTask; A5.Name := To_Unbounded_String("A5"); A5.cpu_name := To_Unbounded_String("processor1"); A5.address_space_name := To_Unbounded_String("addr1"); A5.period := 30000; A5.capacity := 37; A5.deadline := 30000; A5.priority := 5; A5.blocking_time := 0; A5.jitter := 0; A5.every := 1; OA5.offset_value := 117; add(A5.offsets, OA5); add(TransP.task_list, Generic_Task_Ptr (A5)); Sys.Tasks.add(Generic_Task_Ptr (A5)); -- Initialize Task A6 A6 := new PTask; A6.Name := To_Unbounded_String("A6"); A6.cpu_name := To_Unbounded_String("processor1"); A6.address_space_name := To_Unbounded_String("addr1"); A6.period := 30000; A6.capacity := 39; A6.deadline := 30000; A6.priority := 6; A6.blocking_time := 0; A6.jitter := 0; A6.every := 1; OA6.offset_value := 154; add(A6.offsets, OA6); add(TransP.task_list, Generic_Task_Ptr (A6)); Sys.Tasks.add(Generic_Task_Ptr (A6)); -- Initialize Task A7 A7 := new PTask; A7.Name := To_Unbounded_String("A7"); A7.cpu_name := To_Unbounded_String("processor1"); A7.address_space_name := To_Unbounded_String("addr1"); A7.period := 30000; A7.capacity := 41; A7.deadline := 30000; A7.priority := 7; A7.blocking_time := 0; A7.jitter := 0; A7.every := 1; OA7.offset_value := 193; add(A7.offsets, OA7); add(TransP.task_list, Generic_Task_Ptr (A7)); Sys.Tasks.add(Generic_Task_Ptr (A7)); -- Initialize Task A8 A8 := new PTask; A8.Name := To_Unbounded_String("A8"); A8.cpu_name := To_Unbounded_String("processor1"); A8.address_space_name := To_Unbounded_String("addr1"); A8.period := 30000; A8.capacity := 49; A8.deadline := 30000; A8.priority := 8; A8.blocking_time := 0; A8.jitter := 0; A8.every := 1; OA8.offset_value := 234; add(A8.offsets, OA8); add(TransP.task_list, Generic_Task_Ptr (A8)); Sys.Tasks.add(Generic_Task_Ptr (A8)); -- Initialize Task A9 A9 := new PTask; A9.Name := To_Unbounded_String("A9"); A9.cpu_name := To_Unbounded_String("processor1"); A9.address_space_name := To_Unbounded_String("addr1"); A9.period := 30000; A9.capacity := 51; A9.deadline := 30000; A9.priority := 9; A9.blocking_time := 0; A9.jitter := 0; A9.every := 1; OA9.offset_value := 283; add(A9.offsets, OA9); add(TransP.task_list, Generic_Task_Ptr (A9)); Sys.Tasks.add(Generic_Task_Ptr (A9)); -- Initialize Task A10 A10 := new PTask; A10.Name := To_Unbounded_String("A10"); A10.cpu_name := To_Unbounded_String("processor1"); A10.address_space_name := To_Unbounded_String("addr1"); A10.period := 30000; A10.capacity := 54; A10.deadline := 30000; A10.priority := 10; A10.blocking_time := 0; A10.jitter := 0; A10.every := 1; OA10.offset_value := 334; add(A10.offsets, OA10); add(TransP.task_list, Generic_Task_Ptr (A10)); Sys.Tasks.add(Generic_Task_Ptr (A10)); -- Initialize Task A11 A11 := new PTask; A11.Name := To_Unbounded_String("A11"); A11.cpu_name := To_Unbounded_String("processor1"); A11.address_space_name := To_Unbounded_String("addr1"); A11.period := 30000; A11.capacity := 57; A11.deadline := 30000; A11.priority := 11; A11.blocking_time := 0; A11.jitter := 0; A11.every := 1; OA11.offset_value := 388; add(A11.offsets, OA11); add(TransP.task_list, Generic_Task_Ptr (A11)); Sys.Tasks.add(Generic_Task_Ptr (A11)); -- Initialize Task A12 A12 := new PTask; A12.Name := To_Unbounded_String("A12"); A12.cpu_name := To_Unbounded_String("processor1"); A12.address_space_name := To_Unbounded_String("addr1"); A12.period := 30000; A12.capacity := 57; A12.deadline := 30000; A12.priority := 12; A12.blocking_time := 0; A12.jitter := 0; A12.every := 1; OA12.offset_value := 445; add(A12.offsets, OA12); add(TransP.task_list, Generic_Task_Ptr (A12)); Sys.Tasks.add(Generic_Task_Ptr (A12)); -- Initialize Task A13 A13 := new PTask; A13.Name := To_Unbounded_String("A13"); A13.cpu_name := To_Unbounded_String("processor1"); A13.address_space_name := To_Unbounded_String("addr1"); A13.period := 30000; A13.capacity := 64; A13.deadline := 30000; A13.priority := 13; A13.blocking_time := 0; A13.jitter := 0; A13.every := 1; OA13.offset_value := 502; add(A13.offsets, OA13); add(TransP.task_list, Generic_Task_Ptr (A13)); Sys.Tasks.add(Generic_Task_Ptr (A13)); -- Initialize Task A14 A14 := new PTask; A14.Name := To_Unbounded_String("A14"); A14.cpu_name := To_Unbounded_String("processor1"); A14.address_space_name := To_Unbounded_String("addr1"); A14.period := 30000; A14.capacity := 66; A14.deadline := 30000; A14.priority := 14; A14.blocking_time := 0; A14.jitter := 0; A14.every := 1; OA14.offset_value := 566; add(A14.offsets, OA14); add(TransP.task_list, Generic_Task_Ptr (A14)); Sys.Tasks.add(Generic_Task_Ptr (A14)); -- Initialize Task A15 A15 := new PTask; A15.Name := To_Unbounded_String("A15"); A15.cpu_name := To_Unbounded_String("processor1"); A15.address_space_name := To_Unbounded_String("addr1"); A15.period := 30000; A15.capacity := 75; A15.deadline := 30000; A15.priority := 15; A15.blocking_time := 0; A15.jitter := 0; A15.every := 1; OA15.offset_value := 632; add(A15.offsets, OA15); add(TransP.task_list, Generic_Task_Ptr (A15)); Sys.Tasks.add(Generic_Task_Ptr (A15)); -- Initialize Task A16 A16 := new PTask; A16.Name := To_Unbounded_String("A16"); A16.cpu_name := To_Unbounded_String("processor1"); A16.address_space_name := To_Unbounded_String("addr1"); A16.period := 30000; A16.capacity := 79; A16.deadline := 30000; A16.priority := 16; A16.blocking_time := 0; A16.jitter := 0; A16.every := 1; OA16.offset_value := 707; add(A16.offsets, OA16); add(TransP.task_list, Generic_Task_Ptr (A16)); Sys.Tasks.add(Generic_Task_Ptr (A16)); -- Initialize Task A17 A17 := new PTask; A17.Name := To_Unbounded_String("A17"); A17.cpu_name := To_Unbounded_String("processor1"); A17.address_space_name := To_Unbounded_String("addr1"); A17.period := 30000; A17.capacity := 85; A17.deadline := 30000; A17.priority := 17; A17.blocking_time := 0; A17.jitter := 0; A17.every := 1; OA17.offset_value := 786; add(A17.offsets, OA17); add(TransP.task_list, Generic_Task_Ptr (A17)); Sys.Tasks.add(Generic_Task_Ptr (A17)); -- Initialize Task A18 A18 := new PTask; A18.Name := To_Unbounded_String("A18"); A18.cpu_name := To_Unbounded_String("processor1"); A18.address_space_name := To_Unbounded_String("addr1"); A18.period := 30000; A18.capacity := 87; A18.deadline := 30000; A18.priority := 18; A18.blocking_time := 0; A18.jitter := 0; A18.every := 1; OA18.offset_value := 871; add(A18.offsets, OA18); add(TransP.task_list, Generic_Task_Ptr (A18)); Sys.Tasks.add(Generic_Task_Ptr (A18)); -- Initialize Task A19 A19 := new PTask; A19.Name := To_Unbounded_String("A19"); A19.cpu_name := To_Unbounded_String("processor1"); A19.address_space_name := To_Unbounded_String("addr1"); A19.period := 30000; A19.capacity := 96; A19.deadline := 30000; A19.priority := 19; A19.blocking_time := 0; A19.jitter := 0; A19.every := 1; OA19.offset_value := 958; add(A19.offsets, OA19); add(TransP.task_list, Generic_Task_Ptr (A19)); Sys.Tasks.add(Generic_Task_Ptr (A19)); -- Initialize Task A20 A20 := new PTask; A20.Name := To_Unbounded_String("A20"); A20.cpu_name := To_Unbounded_String("processor1"); A20.address_space_name := To_Unbounded_String("addr1"); A20.period := 30000; A20.capacity := 99; A20.deadline := 30000; A20.priority := 20; A20.blocking_time := 0; A20.jitter := 0; A20.every := 1; OA20.offset_value := 1054; add(A20.offsets, OA20); add(TransP.task_list, Generic_Task_Ptr (A20)); Sys.Tasks.add(Generic_Task_Ptr (A20)); -- Initialize Task A21 A21 := new PTask; A21.Name := To_Unbounded_String("A21"); A21.cpu_name := To_Unbounded_String("processor1"); A21.address_space_name := To_Unbounded_String("addr1"); A21.period := 30000; A21.capacity := 106; A21.deadline := 30000; A21.priority := 21; A21.blocking_time := 0; A21.jitter := 0; A21.every := 1; OA21.offset_value := 1153; add(A21.offsets, OA21); add(TransP.task_list, Generic_Task_Ptr (A21)); Sys.Tasks.add(Generic_Task_Ptr (A21)); -- Initialize Task A22 A22 := new PTask; A22.Name := To_Unbounded_String("A22"); A22.cpu_name := To_Unbounded_String("processor1"); A22.address_space_name := To_Unbounded_String("addr1"); A22.period := 30000; A22.capacity := 106; A22.deadline := 30000; A22.priority := 22; A22.blocking_time := 0; A22.jitter := 0; A22.every := 1; OA22.offset_value := 1259; add(A22.offsets, OA22); add(TransP.task_list, Generic_Task_Ptr (A22)); Sys.Tasks.add(Generic_Task_Ptr (A22)); -- Initialize Task A23 A23 := new PTask; A23.Name := To_Unbounded_String("A23"); A23.cpu_name := To_Unbounded_String("processor1"); A23.address_space_name := To_Unbounded_String("addr1"); A23.period := 30000; A23.capacity := 113; A23.deadline := 30000; A23.priority := 23; A23.blocking_time := 0; A23.jitter := 0; A23.every := 1; OA23.offset_value := 1365; add(A23.offsets, OA23); add(TransP.task_list, Generic_Task_Ptr (A23)); Sys.Tasks.add(Generic_Task_Ptr (A23)); -- Initialize Task A24 A24 := new PTask; A24.Name := To_Unbounded_String("A24"); A24.cpu_name := To_Unbounded_String("processor1"); A24.address_space_name := To_Unbounded_String("addr1"); A24.period := 30000; A24.capacity := 120; A24.deadline := 30000; A24.priority := 24; A24.blocking_time := 0; A24.jitter := 0; A24.every := 1; OA24.offset_value := 1478; add(A24.offsets, OA24); add(TransP.task_list, Generic_Task_Ptr (A24)); Sys.Tasks.add(Generic_Task_Ptr (A24)); -- Initialize Task A25 A25 := new PTask; A25.Name := To_Unbounded_String("A25"); A25.cpu_name := To_Unbounded_String("processor1"); A25.address_space_name := To_Unbounded_String("addr1"); A25.period := 30000; A25.capacity := 120; A25.deadline := 30000; A25.priority := 25; A25.blocking_time := 0; A25.jitter := 0; A25.every := 1; OA25.offset_value := 1598; add(A25.offsets, OA25); add(TransP.task_list, Generic_Task_Ptr (A25)); Sys.Tasks.add(Generic_Task_Ptr (A25)); -- Initialize Task A26 A26 := new PTask; A26.Name := To_Unbounded_String("A26"); A26.cpu_name := To_Unbounded_String("processor1"); A26.address_space_name := To_Unbounded_String("addr1"); A26.period := 30000; A26.capacity := 121; A26.deadline := 30000; A26.priority := 26; A26.blocking_time := 0; A26.jitter := 0; A26.every := 1; OA26.offset_value := 1718; add(A26.offsets, OA26); add(TransP.task_list, Generic_Task_Ptr (A26)); Sys.Tasks.add(Generic_Task_Ptr (A26)); -- Initialize Task A27 A27 := new PTask; A27.Name := To_Unbounded_String("A27"); A27.cpu_name := To_Unbounded_String("processor1"); A27.address_space_name := To_Unbounded_String("addr1"); A27.period := 30000; A27.capacity := 127; A27.deadline := 30000; A27.priority := 27; A27.blocking_time := 0; A27.jitter := 0; A27.every := 1; OA27.offset_value := 1839; add(A27.offsets, OA27); add(TransP.task_list, Generic_Task_Ptr (A27)); Sys.Tasks.add(Generic_Task_Ptr (A27)); -- Initialize Task A28 A28 := new PTask; A28.Name := To_Unbounded_String("A28"); A28.cpu_name := To_Unbounded_String("processor1"); A28.address_space_name := To_Unbounded_String("addr1"); A28.period := 30000; A28.capacity := 133; A28.deadline := 30000; A28.priority := 28; A28.blocking_time := 0; A28.jitter := 0; A28.every := 1; OA28.offset_value := 1966; add(A28.offsets, OA28); add(TransP.task_list, Generic_Task_Ptr (A28)); Sys.Tasks.add(Generic_Task_Ptr (A28)); -- Initialize Task A29 A29 := new PTask; A29.Name := To_Unbounded_String("A29"); A29.cpu_name := To_Unbounded_String("processor1"); A29.address_space_name := To_Unbounded_String("addr1"); A29.period := 30000; A29.capacity := 137; A29.deadline := 30000; A29.priority := 29; A29.blocking_time := 0; A29.jitter := 0; A29.every := 1; OA29.offset_value := 2099; add(A29.offsets, OA29); add(TransP.task_list, Generic_Task_Ptr (A29)); Sys.Tasks.add(Generic_Task_Ptr (A29)); -- Initialize Task A30 A30 := new PTask; A30.Name := To_Unbounded_String("A30"); A30.cpu_name := To_Unbounded_String("processor1"); A30.address_space_name := To_Unbounded_String("addr1"); A30.period := 30000; A30.capacity := 144; A30.deadline := 30000; A30.priority := 30; A30.blocking_time := 0; A30.jitter := 0; A30.every := 1; OA30.offset_value := 2236; add(A30.offsets, OA30); add(TransP.task_list, Generic_Task_Ptr (A30)); Sys.Tasks.add(Generic_Task_Ptr (A30)); -- Initialize Task A31 A31 := new PTask; A31.Name := To_Unbounded_String("A31"); A31.cpu_name := To_Unbounded_String("processor1"); A31.address_space_name := To_Unbounded_String("addr1"); A31.period := 30000; A31.capacity := 145; A31.deadline := 30000; A31.priority := 31; A31.blocking_time := 0; A31.jitter := 0; A31.every := 1; OA31.offset_value := 2380; add(A31.offsets, OA31); add(TransP.task_list, Generic_Task_Ptr (A31)); Sys.Tasks.add(Generic_Task_Ptr (A31)); -- Initialize Task A32 A32 := new PTask; A32.Name := To_Unbounded_String("A32"); A32.cpu_name := To_Unbounded_String("processor1"); A32.address_space_name := To_Unbounded_String("addr1"); A32.period := 30000; A32.capacity := 152; A32.deadline := 30000; A32.priority := 32; A32.blocking_time := 0; A32.jitter := 0; A32.every := 1; OA32.offset_value := 2525; add(A32.offsets, OA32); add(TransP.task_list, Generic_Task_Ptr (A32)); Sys.Tasks.add(Generic_Task_Ptr (A32)); -- Initialize Task A33 A33 := new PTask; A33.Name := To_Unbounded_String("A33"); A33.cpu_name := To_Unbounded_String("processor1"); A33.address_space_name := To_Unbounded_String("addr1"); A33.period := 30000; A33.capacity := 158; A33.deadline := 30000; A33.priority := 33; A33.blocking_time := 0; A33.jitter := 0; A33.every := 1; OA33.offset_value := 2677; add(A33.offsets, OA33); add(TransP.task_list, Generic_Task_Ptr (A33)); Sys.Tasks.add(Generic_Task_Ptr (A33)); -- Initialize Task A34 A34 := new PTask; A34.Name := To_Unbounded_String("A34"); A34.cpu_name := To_Unbounded_String("processor1"); A34.address_space_name := To_Unbounded_String("addr1"); A34.period := 30000; A34.capacity := 164; A34.deadline := 30000; A34.priority := 34; A34.blocking_time := 0; A34.jitter := 0; A34.every := 1; OA34.offset_value := 2835; add(A34.offsets, OA34); add(TransP.task_list, Generic_Task_Ptr (A34)); Sys.Tasks.add(Generic_Task_Ptr (A34)); -- Initialize Task A35 A35 := new PTask; A35.Name := To_Unbounded_String("A35"); A35.cpu_name := To_Unbounded_String("processor1"); A35.address_space_name := To_Unbounded_String("addr1"); A35.period := 30000; A35.capacity := 169; A35.deadline := 30000; A35.priority := 35; A35.blocking_time := 0; A35.jitter := 0; A35.every := 1; OA35.offset_value := 2999; add(A35.offsets, OA35); add(TransP.task_list, Generic_Task_Ptr (A35)); Sys.Tasks.add(Generic_Task_Ptr (A35)); -- Initialize Task A36 A36 := new PTask; A36.Name := To_Unbounded_String("A36"); A36.cpu_name := To_Unbounded_String("processor1"); A36.address_space_name := To_Unbounded_String("addr1"); A36.period := 30000; A36.capacity := 169; A36.deadline := 30000; A36.priority := 36; A36.blocking_time := 0; A36.jitter := 0; A36.every := 1; OA36.offset_value := 3168; add(A36.offsets, OA36); add(TransP.task_list, Generic_Task_Ptr (A36)); Sys.Tasks.add(Generic_Task_Ptr (A36)); -- Initialize Task A37 A37 := new PTask; A37.Name := To_Unbounded_String("A37"); A37.cpu_name := To_Unbounded_String("processor1"); A37.address_space_name := To_Unbounded_String("addr1"); A37.period := 30000; A37.capacity := 173; A37.deadline := 30000; A37.priority := 37; A37.blocking_time := 0; A37.jitter := 0; A37.every := 1; OA37.offset_value := 3337; add(A37.offsets, OA37); add(TransP.task_list, Generic_Task_Ptr (A37)); Sys.Tasks.add(Generic_Task_Ptr (A37)); -- Initialize Task A38 A38 := new PTask; A38.Name := To_Unbounded_String("A38"); A38.cpu_name := To_Unbounded_String("processor1"); A38.address_space_name := To_Unbounded_String("addr1"); A38.period := 30000; A38.capacity := 181; A38.deadline := 30000; A38.priority := 38; A38.blocking_time := 0; A38.jitter := 0; A38.every := 1; OA38.offset_value := 3510; add(A38.offsets, OA38); add(TransP.task_list, Generic_Task_Ptr (A38)); Sys.Tasks.add(Generic_Task_Ptr (A38)); -- Initialize Task A39 A39 := new PTask; A39.Name := To_Unbounded_String("A39"); A39.cpu_name := To_Unbounded_String("processor1"); A39.address_space_name := To_Unbounded_String("addr1"); A39.period := 30000; A39.capacity := 181; A39.deadline := 30000; A39.priority := 39; A39.blocking_time := 0; A39.jitter := 0; A39.every := 1; OA39.offset_value := 3691; add(A39.offsets, OA39); add(TransP.task_list, Generic_Task_Ptr (A39)); Sys.Tasks.add(Generic_Task_Ptr (A39)); -- Initialize Task A40 A40 := new PTask; A40.Name := To_Unbounded_String("A40"); A40.cpu_name := To_Unbounded_String("processor1"); A40.address_space_name := To_Unbounded_String("addr1"); A40.period := 30000; A40.capacity := 189; A40.deadline := 30000; A40.priority := 40; A40.blocking_time := 0; A40.jitter := 0; A40.every := 1; OA40.offset_value := 3872; add(A40.offsets, OA40); add(TransP.task_list, Generic_Task_Ptr (A40)); Sys.Tasks.add(Generic_Task_Ptr (A40)); -- Initialize Task A41 A41 := new PTask; A41.Name := To_Unbounded_String("A41"); A41.cpu_name := To_Unbounded_String("processor1"); A41.address_space_name := To_Unbounded_String("addr1"); A41.period := 30000; A41.capacity := 196; A41.deadline := 30000; A41.priority := 41; A41.blocking_time := 0; A41.jitter := 0; A41.every := 1; OA41.offset_value := 4061; add(A41.offsets, OA41); add(TransP.task_list, Generic_Task_Ptr (A41)); Sys.Tasks.add(Generic_Task_Ptr (A41)); -- Initialize Task A42 A42 := new PTask; A42.Name := To_Unbounded_String("A42"); A42.cpu_name := To_Unbounded_String("processor1"); A42.address_space_name := To_Unbounded_String("addr1"); A42.period := 30000; A42.capacity := 205; A42.deadline := 30000; A42.priority := 42; A42.blocking_time := 0; A42.jitter := 0; A42.every := 1; OA42.offset_value := 4257; add(A42.offsets, OA42); add(TransP.task_list, Generic_Task_Ptr (A42)); Sys.Tasks.add(Generic_Task_Ptr (A42)); -- Initialize Task A43 A43 := new PTask; A43.Name := To_Unbounded_String("A43"); A43.cpu_name := To_Unbounded_String("processor1"); A43.address_space_name := To_Unbounded_String("addr1"); A43.period := 30000; A43.capacity := 211; A43.deadline := 30000; A43.priority := 43; A43.blocking_time := 0; A43.jitter := 0; A43.every := 1; OA43.offset_value := 4462; add(A43.offsets, OA43); add(TransP.task_list, Generic_Task_Ptr (A43)); Sys.Tasks.add(Generic_Task_Ptr (A43)); -- Initialize Task A44 A44 := new PTask; A44.Name := To_Unbounded_String("A44"); A44.cpu_name := To_Unbounded_String("processor1"); A44.address_space_name := To_Unbounded_String("addr1"); A44.period := 30000; A44.capacity := 213; A44.deadline := 30000; A44.priority := 44; A44.blocking_time := 0; A44.jitter := 0; A44.every := 1; OA44.offset_value := 4673; add(A44.offsets, OA44); add(TransP.task_list, Generic_Task_Ptr (A44)); Sys.Tasks.add(Generic_Task_Ptr (A44)); -- Initialize Task A45 A45 := new PTask; A45.Name := To_Unbounded_String("A45"); A45.cpu_name := To_Unbounded_String("processor1"); A45.address_space_name := To_Unbounded_String("addr1"); A45.period := 30000; A45.capacity := 216; A45.deadline := 30000; A45.priority := 45; A45.blocking_time := 0; A45.jitter := 0; A45.every := 1; OA45.offset_value := 4886; add(A45.offsets, OA45); add(TransP.task_list, Generic_Task_Ptr (A45)); Sys.Tasks.add(Generic_Task_Ptr (A45)); -- Initialize Task A46 A46 := new PTask; A46.Name := To_Unbounded_String("A46"); A46.cpu_name := To_Unbounded_String("processor1"); A46.address_space_name := To_Unbounded_String("addr1"); A46.period := 30000; A46.capacity := 216; A46.deadline := 30000; A46.priority := 46; A46.blocking_time := 0; A46.jitter := 0; A46.every := 1; OA46.offset_value := 5102; add(A46.offsets, OA46); add(TransP.task_list, Generic_Task_Ptr (A46)); Sys.Tasks.add(Generic_Task_Ptr (A46)); -- Initialize Task A47 A47 := new PTask; A47.Name := To_Unbounded_String("A47"); A47.cpu_name := To_Unbounded_String("processor1"); A47.address_space_name := To_Unbounded_String("addr1"); A47.period := 30000; A47.capacity := 224; A47.deadline := 30000; A47.priority := 47; A47.blocking_time := 0; A47.jitter := 0; A47.every := 1; OA47.offset_value := 5318; add(A47.offsets, OA47); add(TransP.task_list, Generic_Task_Ptr (A47)); Sys.Tasks.add(Generic_Task_Ptr (A47)); -- Initialize Task A48 A48 := new PTask; A48.Name := To_Unbounded_String("A48"); A48.cpu_name := To_Unbounded_String("processor1"); A48.address_space_name := To_Unbounded_String("addr1"); A48.period := 30000; A48.capacity := 225; A48.deadline := 30000; A48.priority := 48; A48.blocking_time := 0; A48.jitter := 0; A48.every := 1; OA48.offset_value := 5542; add(A48.offsets, OA48); add(TransP.task_list, Generic_Task_Ptr (A48)); Sys.Tasks.add(Generic_Task_Ptr (A48)); -- Initialize Task A49 A49 := new PTask; A49.Name := To_Unbounded_String("A49"); A49.cpu_name := To_Unbounded_String("processor1"); A49.address_space_name := To_Unbounded_String("addr1"); A49.period := 30000; A49.capacity := 228; A49.deadline := 30000; A49.priority := 49; A49.blocking_time := 0; A49.jitter := 0; A49.every := 1; OA49.offset_value := 5767; add(A49.offsets, OA49); add(TransP.task_list, Generic_Task_Ptr (A49)); Sys.Tasks.add(Generic_Task_Ptr (A49)); -- Initialize Task A50 A50 := new PTask; A50.Name := To_Unbounded_String("A50"); A50.cpu_name := To_Unbounded_String("processor1"); A50.address_space_name := To_Unbounded_String("addr1"); A50.period := 30000; A50.capacity := 230; A50.deadline := 30000; A50.priority := 50; A50.blocking_time := 0; A50.jitter := 0; A50.every := 1; OA50.offset_value := 5995; add(A50.offsets, OA50); add(TransP.task_list, Generic_Task_Ptr (A50)); Sys.Tasks.add(Generic_Task_Ptr (A50)); Sys.Task_Groups.add(Generic_Task_Group_Ptr (TransP)); -- -- Write_To_Xml_File(Sys, "binaries/bin/debug/rp_test.xml"); -- Read_From_Xml_File(A_System => Sys, -- Dir_List => dummy, -- File_Name => "binaries/bin/debug/rp_test.xml"); ILoop := 0; loop Time_And_Date := Clock; Split(Time_And_Date, Year, Month, Day, Start); Tindell_Compute_Offset_Response_Time(Sys.Task_Groups, Processor_Name, Msg, Response_Time); Time_And_Date := Clock; Split(Time_And_Date, Year, Month, Day, Seconds); Put(Seconds - Start, 8, 8, 0); Put_line(""); exit when ILoop > 10; ILoop := ILoop + 1; end loop; put_line("---------------"); ILoop := 0; loop Time_And_Date := Clock; Split(Time_And_Date, Year, Month, Day, Start); Audsley_Compute_Offset_Response_Time(Sys.Task_Groups, Processor_Name, Msg, Response_Time2); Time_And_Date := Clock; Split(Time_And_Date, Year, Month, Day, Seconds); Put(Seconds - Start, 8, 8, 0); Put_line(""); exit when ILoop > 10; ILoop := ILoop + 1; end loop; -------------------------------------------- --Palencia_Compute_Offset_Response_Time(Sys.Task_Groups, Processor_Name, Msg, Response_Time); --print_result(Response_Time); ----------------------------------------------------------------------------- -- -- Example #2: Audsley (Optimal priority assignment and feasibility of -- static priority tasks with arbitrary start times) -- TEST 1: before task tranforming - will fail to schedule -- ----------------------------------------------------------------------------- -- Initialize transactions Trans1 := new Transaction; Trans1.period := 10; Trans2 := new Transaction; Trans2.period := 20; Trans3 := new Transaction; Trans3.period := 40; -- Initialize Task A A := new PTask; A.Name := To_Unbounded_String("A"); A.capacity := 1; A.deadline := 1; A.priority := 1; A.blocking_time := 0; A.jitter := 0; Oa.offset_value := 4; A.every := 1; add(A.offsets, Oa); -- Initialize Task B B := new PTask; B.Name := To_Unbounded_String("B"); B.capacity := 1; B.deadline := 2; B.priority := 4; B.blocking_time := 0; B.jitter := 0; B.every := 1; Ob.offset_value := 5; add(B.offsets, Ob); -- Initialize Task C C := new PTask; C.Name := To_Unbounded_String("C"); C.capacity := 5; C.deadline := 6; C.priority := 2; C.blocking_time := 0; C.jitter := 0; C.every := 1; Oc.offset_value := 0; add(C.offsets, Oc); -- Initialize Task D D := new PTask; D.Name := To_Unbounded_String("D"); D.capacity := 8; D.deadline := 9; D.priority := 3; D.blocking_time := 0; D.jitter := 0; D.every := 1; Od.offset_value := 7; add(D.offsets, Od); -- Initialize Task E E := new PTask; E.Name := To_Unbounded_String("E"); E.capacity := 8; E.deadline := 14; E.priority := 6; E.blocking_time := 0; E.jitter := 0; E.every := 1; Oe.offset_value := 27; add(E.offsets, Oe); -- Initialize Task F F := new PTask; F.Name := To_Unbounded_String("F"); F.capacity := 6; F.deadline := 30; F.priority := 5; F.blocking_time := 0; F.jitter := 0; F.every := 1; O_f.offset_value := 0; add(F.offsets, O_f); add(Trans1.task_list, Generic_Task_Ptr (A)); add(Trans1.task_list, Generic_Task_Ptr (B)); add(Trans2.task_list, Generic_Task_Ptr (C)); add(Trans3.task_list, Generic_Task_Ptr (D)); add(Trans3.task_list, Generic_Task_Ptr (E)); add(Trans3.task_list, Generic_Task_Ptr (F)); Sys2.Tasks.add(Generic_Task_Ptr (A)); Sys2.Tasks.add(Generic_Task_Ptr (B)); Sys2.Tasks.add(Generic_Task_Ptr (C)); Sys2.Tasks.add(Generic_Task_Ptr (D)); Sys2.Tasks.add(Generic_Task_Ptr (E)); Sys2.Tasks.add(Generic_Task_Ptr (F)); Sys2.Task_Groups.add(Generic_Task_Group_Ptr (Trans1)); Sys2.Task_Groups.add(Generic_Task_Group_Ptr (Trans2)); Sys2.Task_Groups.add(Generic_Task_Group_Ptr (Trans3)); Write_To_Xml_File(Sys2, "binaries/bin/debug/offset_test2.xml"); -- Audsley_Compute_Offset_Response_Time(Sys2.Task_Groups, Processor_Name, Msg, Response_Time2); --Tindell_Compute_Offset_Response_Time(Sys2.Task_Groups, Processor_Name, Msg, Response_Time2); --Tindell_Compute_Offset_Response_Time(Sys2.Task_Groups, Processor_Name, Msg, Response_Time2); --print_result(Response_Time2); -- -- TEST 2: after task tranforming - schedulable -- ----------------------------------------------------------------------------- -- Initialize transactions TransP2 := new Transaction; TransP2.period := 40; -- Initialize Task A A1 := new PTask; A1.Name := To_Unbounded_String("A1"); A1.capacity := 1; A1.deadline := 1; A1.priority := 1; A1.blocking_time := 0; A1.jitter := 0; A1.every := 1; Oa1.offset_value := 4; add(A1.offsets, Oa1); A2 := new PTask; A2.Name := To_Unbounded_String("A2"); A2.capacity := 1; A2.deadline := 1; A2.priority := 1; A2.blocking_time := 0; A2.jitter := 0; A2.every := 1; Oa2.offset_value := 14; add(A2.offsets, Oa2); A3 := new PTask; A3.Name := To_Unbounded_String("A3"); A3.capacity := 1; A3.deadline := 1; A3.priority := 1; A3.blocking_time := 0; A3.jitter := 0; A3.every := 1; Oa3.offset_value := 24; add(A3.offsets, Oa3); A4 := new PTask; A4.Name := To_Unbounded_String("A4"); A4.capacity := 1; A4.deadline := 1; A4.priority := 1; A4.blocking_time := 0; A4.jitter := 0; A4.every := 1; Oa4.offset_value := 34; add(A4.offsets, Oa4); -- Initialize Task B B1 := new PTask; B1.Name := To_Unbounded_String("B1"); B1.capacity := 1; B1.deadline := 2; B1.priority := 4; B1.blocking_time := 0; B1.jitter := 0; B1.every := 1; Ob1.offset_value := 5; add(B1.offsets, Ob1); B2 := new PTask; B2.Name := To_Unbounded_String("B2"); B2.capacity := 1; B2.deadline := 2; B2.priority := 4; B2.blocking_time := 0; B2.jitter := 0; B2.every := 1; Ob2.offset_value := 15; add(B2.offsets, Ob2); B3 := new PTask; B3.Name := To_Unbounded_String("B3"); B3.capacity := 1; B3.deadline := 2; B3.priority := 4; B3.blocking_time := 0; B3.jitter := 0; B3.every := 1; Ob3.offset_value := 25; add(B3.offsets, Ob3); B4 := new PTask; B4.Name := To_Unbounded_String("B4"); B4.capacity := 1; B4.deadline := 2; B4.priority := 4; B4.blocking_time := 0; B4.jitter := 0; B4.every := 1; Ob4.offset_value := 35; add(B4.offsets, Ob4); -- Initialize Task C C1 := new PTask; C1.Name := To_Unbounded_String("C1"); C1.capacity := 5; C1.deadline := 6; C1.priority := 2; C1.blocking_time := 0; C1.jitter := 0; C1.every := 1; Oc1.offset_value := 0; add(C1.offsets, Oc1); C2 := new PTask; C2.Name := To_Unbounded_String("C2"); C2.capacity := 5; C2.deadline := 6; C2.priority := 2; C2.blocking_time := 0; C2.jitter := 0; C2.every := 1; Oc2.offset_value := 20; add(C2.offsets, Oc2); -- Initialize Task D D1 := new PTask; D1.Name := To_Unbounded_String("D1"); D1.capacity := 8; D1.deadline := 9; D1.priority := 3; D1.blocking_time := 0; D1.jitter := 0; D1.every := 1; Od1.offset_value := 7; add(D1.offsets, Od1); -- Initialize Task E E1 := new PTask; E1.Name := To_Unbounded_String("E1"); E1.capacity := 8; E1.deadline := 14; E1.priority := 6; E1.blocking_time := 0; E1.jitter := 0; E1.every := 1; Oe1.offset_value := 27; add(E1.offsets, Oe1); -- Initialize Task F F1 := new PTask; F1.Name := To_Unbounded_String("F1"); F1.capacity := 6; F1.deadline := 30; F1.priority := 5; F1.blocking_time := 0; F1.jitter := 0; F1.every := 1; O_f1.offset_value := 0; add(F1.offsets, O_f1); add(TransP2.task_list, Generic_Task_Ptr (A1)); add(TransP2.task_list, Generic_Task_Ptr (A2)); add(TransP2.task_list, Generic_Task_Ptr (A3)); add(TransP2.task_list, Generic_Task_Ptr (A4)); add(TransP2.task_list, Generic_Task_Ptr (B1)); add(TransP2.task_list, Generic_Task_Ptr (B2)); add(TransP2.task_list, Generic_Task_Ptr (B3)); add(TransP2.task_list, Generic_Task_Ptr (B4)); add(TransP2.task_list, Generic_Task_Ptr (C1)); add(TransP2.task_list, Generic_Task_Ptr (C2)); add(TransP2.task_list, Generic_Task_Ptr (D1)); add(TransP2.task_list, Generic_Task_Ptr (E1)); add(TransP2.task_list, Generic_Task_Ptr (F1)); Sys3.Tasks.add(Generic_Task_Ptr (A1)); Sys3.Tasks.add(Generic_Task_Ptr (A2)); Sys3.Tasks.add(Generic_Task_Ptr (A3)); Sys3.Tasks.add(Generic_Task_Ptr (A4)); Sys3.Tasks.add(Generic_Task_Ptr (B1)); Sys3.Tasks.add(Generic_Task_Ptr (B1)); Sys3.Tasks.add(Generic_Task_Ptr (B3)); Sys3.Tasks.add(Generic_Task_Ptr (B4)); Sys3.Tasks.add(Generic_Task_Ptr (C1)); Sys3.Tasks.add(Generic_Task_Ptr (C2)); Sys3.Tasks.add(Generic_Task_Ptr (D1)); Sys3.Tasks.add(Generic_Task_Ptr (E1)); Sys3.Tasks.add(Generic_Task_Ptr (F1)); Sys3.Task_Groups.add(Generic_Task_Group_Ptr (TransP2)); -- Audsley_Compute_Offset_Response_Time(Sys3.Task_Groups, Processor_Name, Msg, Response_Time3); --Tindell_Compute_Offset_Response_Time(Sys3.Task_Groups, Processor_Name, Msg, Response_Time3); --print_result(Response_Time3); Write_To_Xml_File(Sys3, "binaries/bin/debug/offset_test3.xml"); --put_line(To_String(XML_String(My_Task_Groups3))); --put_line(To_String(XML_String(TransP2))); end feastest;