-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks

with Instrument;
use Instrument;

procedure Tputa2 is
    task Head;
    task Link1 is
        entry Give1;
        entry Give2;
        entry Give3;
        entry Give4;
        entry Give5;
        entry Give6;
        entry Give7;
        entry Give8;
        entry Give9;
        entry Give10;
        entry Give11;
        entry Give12;
        entry Give13;
        entry Give14;
        entry Give15;
        entry Give16;
        entry Give17;
        entry Give18;
        entry Give19;
        entry Give20;
    end Link1;
    task body Head is
    begin
        Start ("TPUTA2", "Task Perf. Unknown Test (test)");
        for I in 1 .. 1000 loop
            Link1.Give1;
            Link1.Give2;
            Link1.Give3;
            Link1.Give4;
            Link1.Give5;
            Link1.Give6;
            Link1.Give7;
            Link1.Give8;
            Link1.Give9;
            Link1.Give10;
            Link1.Give11;
            Link1.Give12;
            Link1.Give13;
            Link1.Give14;
            Link1.Give15;
            Link1.Give16;
            Link1.Give17;
            Link1.Give18;
            Link1.Give19;
            Link1.Give20;
        end loop;
        Stop;
        abort Link1;
    end Head;
    task body Link1 is
    begin
        loop
            select
                accept Give1 do
                    null;
                end Give1;
            or
                accept Give2 do
                    null;
                end Give2;
            or
                accept Give3 do
                    null;
                end Give3;
            or
                accept Give4 do
                    null;
                end Give4;
            or
                accept Give5 do
                    null;
                end Give5;
            or
                accept Give6 do
                    null;
                end Give6;
            or
                accept Give7 do
                    null;
                end Give7;
            or
                accept Give8 do
                    null;
                end Give8;
            or
                accept Give9 do
                    null;
                end Give9;
            or
                accept Give10 do
                    null;
                end Give10;
            or
                accept Give11 do
                    null;
                end Give11;
            or
                accept Give12 do
                    null;
                end Give12;
            or
                accept Give13 do
                    null;
                end Give13;
            or
                accept Give14 do
                    null;
                end Give14;
            or
                accept Give15 do
                    null;
                end Give15;
            or
                accept Give16 do
                    null;
                end Give16;
            or
                accept Give17 do
                    null;
                end Give17;
            or
                accept Give18 do
                    null;
                end Give18;
            or
                accept Give19 do
                    null;
                end Give19;
            or
                accept Give20 do
                    null;
                end Give20;
            end select;
        end loop;
    end Link1;
begin
    null;
end Tputa2;