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;
|