-- ada tasking tester
-- test the effect of an 'in out' parameter size on task performance
-- task head is the controller
-- tasks link are the chain of tasks

with Instrument;
use Instrument;

procedure Taopc2 is

    type Param_Type is array (1 .. 64) of Integer;
    task Head is
        --  entry give;                     --included in control version
        entry Give (P : in Param_Type);    --included in test version
    end Head;
    task Link1 is
        --  entry give;                     --included in control version
        entry Give (P : in Param_Type);    --included in test version
    end Link1;
    task body Head is
        P : Param_Type;
    begin
        Start ("TAOPC2",
               "Task Perf. w/64 element Array 'in out' Param. (test)");
        for I in 1 .. 10000 loop
            --    link1.give;     --included in control version
            Link1.Give (P);  --included in test version
            accept
--        give        --included in control version
                  Give (P : in Param_Type) -- inc in test ver
                do
                null;
            end Give;
        end loop;
        Stop;
        abort Link1;
    end Head;
    task body Link1 is
        P : Param_Type;
    begin
        loop
            accept
--        give         --included in control version
                  Give (P : in Param_Type)  -- inc in test ver
                do
                null;
            end Give;
            --    head.give;       --included in control version
            Head.Give (P);    --included in test version
        end loop;
    end Link1;
begin
    null;
end Taopc2;