florist_blady_6.1.0_05ac0091/tests/p990000.ads

  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
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
------------------------------------------------------------------------------
--                                                                          --
--                      POSIX.5b VALIDATION TEST SUITE                      --
--                                                                          --
--                             P 9 9 0 0 0 0                                --
--                                                                          --
--                                S p e c                                   --
--                                                                          --
--                                                                          --
--  Copyright (c) 1998-1999 Florida  State  University  (FSU).  All Rights  --
--  Reserved.                                                               --
--                                                                          --
--  This is free software;  you can redistribute it and/or modify it under  --
--  terms of the  GNU  General  Public  License  as published by the  Free  --
--  Software Foundation;  either version 2, or (at your option) any  later  --
--  version.  This  software  is distributed  in the hope that it  will be  --
--  useful, but WITHOUT ANY WARRANTY; without even the implied warranty of  --
--  MERCHANTABILITY   or  FITNESS FOR A PARTICULAR PURPOSE.   See the  GNU  --
--  General Public License for more details.  You  should have  received a  --
--  copy of the GNU General Public License  distributed  with  GNARL;  see  --
--  file  COPYING.  If not,  write to  the  Free  Software  Foundation, 59  --
--  Temple Place - Suite 330, Boston, MA 02111-1307, USA.                   --
--                                                                          --
--  Under contract  GS-35F-4506G, the U. S. Government obtained  unlimited  --
--  rights in the software and documentation contained herein.   Unlimited  --
--  rights are defined in DFAR 252,227-7013(a)(19).  By making this public  --
--  release,   the  Government  intends  to  confer  upon  all  recipients  --
--  unlimited  rights equal to those held by the Government.  These rights  --
--  include rights to use,  duplicate,  release  or  disclose the released  --
--  data an computer software  in whole or in part,  in any manner and for  --
--  any purpose whatsoever, and to have or permit others to do so.          --
--                                                                          --
--  DISCLAIMER   --   ALL MATERIALS OR INFORMATION HEREIN RELEASED,   MADE  --
--  AVAILABLE OR DISCLOSED ARE AS IS.   THE GOVERNMENT MAKES NO EXPRESS OR  --
--  IMPLIED WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS  --
--  OF THE SOFTWARE,  DOCUMENTATION  OR  OTHER INFORMATION RELEASED,  MADE  --
--  AVAILABLE OR DISCLOSED,  OR THE OWNERSHIP,  MECHANTABILITY, OR FITNESS  --
--  FOR A PARTICULAR PURPOSE OF SAID MATERIAL.                              --
--                                                                          --
------------------------------------------------------------------------------
--  [$Revision: 1.3 $]

--  This package contains declarations of types, constants,
--  and subprograms that are common to the P9900** series of
--  tests.

--  See file P9900doc.ads for more detailed explanation.

with Calendar,
     Ada.Real_Time,
     POSIX,
     POSIX_Calendar,
     P9900doc,
     System;
package P990000 is

   subtype Jobs is Integer range 0 .. 5;

   type Job_Duration_Array is array (Jobs) of Duration;
   type Job_Integer_Array is array (Jobs) of Integer;

   type Shared_Data_Area is record
      Missed_Deadlines : aliased Boolean;
      Input_Load,
      Computation_Load,
      Output_Load : aliased Job_Integer_Array;
      Start_Calendar_Time : aliased Calendar.Time;
      Start_POSIX_Time : aliased POSIX_Calendar.POSIX_Time;
      Start_Timespec : aliased POSIX.Timespec;
      Start_Real_Time : aliased Ada.Real_Time.Time;
      Check : aliased Integer;
   end record;
   pragma Volatile (Shared_Data_Area);

   type Shared_Data_Ptr is access all Shared_Data_Area;
   type Job_Procedure_Ptr is access procedure (Job : Jobs);

   Main_Priority : constant System.Priority := System.Priority'Last;

   Priority : constant array (Jobs) of System.Priority :=
     (System.Priority'Last - 1,
      System.Priority'Last - 2,
      System.Priority'Last - 3,
      System.Priority'Last - 4,
      System.Priority'Last - 5,
      System.Priority'Last - 6);

   Rate : constant array (Jobs) of Natural :=
     (32, 16, 8, 4, 2, 1);

   function Period (Job : Jobs) return Duration;
   --  returns 1.0 / Rate (Job)

   Computation_Time : constant array (Jobs) of Float :=
     (0.004,
      0.005,
      0.002,
      0.005,
      0.001,
      0.006);

   Input_Time  : constant array (Jobs) of Float :=
     (others => 0.00000016);

   Output_Time : constant array (Jobs) of Float :=
     (others => 0.00000016);

   --  The following constants determine how long we run some of
   --  the iterative approximations.

   Seconds_To_Run : constant Integer := 10;
   --  number of seconds to run each simulation
   --  during bisection

   Real_Accuracy : constant := 100.0;

   --  Real_Accuracy specifies the number of decimal digits to
   --  which we measure the execution time of procedure that does one unit
   --  of simulated work.

   Accuracy : constant := 100;

   --  Accuracy specifies the relative accuracy to which we determine the
   --  breakdown utilization, i.e., we quit when
   --        Hi - Lo <= (Load_Factor + Accuracy) / Accuracy

   procedure Do_Unit_Work (Dummy : Integer);

   --  One execution of Do_Unit_Work is the unit of simulated work load,
   --  corresponding to one use of the parameter Load
   --  in the procedures below.

   procedure Do_Input (Load : Natural);
   procedure Do_Computation (Load : Natural);
   procedure Do_Output (Load : Natural);

end P990000;