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

with Instrument;
use Instrument;

procedure Tputc2 is

    task Head;
    task Link1 is
        entry Give;
    end Link1;
    task Link2 is
        entry Give;
    end Link2;
    task Link3 is
        entry Give;
    end Link3;
    task Link4 is
        entry Give;
    end Link4;
    task Link5 is
        entry Give;
    end Link5;
    task Link6 is
        entry Give;
    end Link6;
    task Link7 is
        entry Give;
    end Link7;
    task Link8 is
        entry Give;
    end Link8;
    task Link9 is
        entry Give;
    end Link9;
    task Link10 is
        entry Give;
    end Link10;
    task Link11 is
        entry Give;
    end Link11;
    task Link12 is
        entry Give;
    end Link12;
    task Link13 is
        entry Give;
    end Link13;
    task Link14 is
        entry Give;
    end Link14;
    task Link15 is
        entry Give;
    end Link15;
    task Link16 is
        entry Give;
    end Link16;
    task Link17 is
        entry Give;
    end Link17;
    task Link18 is
        entry Give;
    end Link18;
    task Link19 is
        entry Give;
    end Link19;
    task Link20 is
        entry Give;
    end Link20;
    task body Head is
    begin
        Start ("TPUTC2", "Task Perf., Unknown Test (test)");
        for I in 1 .. 1000 loop
            Link1.Give;
            Link2.Give;
            Link3.Give;
            Link4.Give;
            Link5.Give;
            Link6.Give;
            Link7.Give;
            Link8.Give;
            Link9.Give;
            Link10.Give;
            Link11.Give;
            Link12.Give;
            Link13.Give;
            Link14.Give;
            Link15.Give;
            Link16.Give;
            Link17.Give;
            Link18.Give;
            Link19.Give;
            Link20.Give;
        end loop;
        Stop;
        abort Link1, Link2, Link3, Link4, Link5, Link6, Link7,
              Link8, Link9, Link10, Link11, Link12, Link13, Link14,
              Link15, Link16, Link17, Link18, Link19, Link20;
    end Head;
    task body Link1 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link1;
    task body Link2 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link2;
    task body Link3 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link3;
    task body Link4 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link4;
    task body Link5 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link5;
    task body Link6 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link6;
    task body Link7 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link7;
    task body Link8 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link8;
    task body Link9 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link9;
    task body Link10 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link10;
    task body Link11 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link11;
    task body Link12 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link12;
    task body Link13 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link13;
    task body Link14 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link14;
    task body Link15 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link15;
    task body Link16 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link16;
    task body Link17 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link17;
    task body Link18 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link18;
    task body Link19 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link19;
    task body Link20 is
    begin
        loop
            accept Give do
                null;
            end Give;
        end loop;
    end Link20;
begin
    null;
end Tputc2;