KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > DEOS > ProcessConstraint


1 //
2
// Copyright (C) 2005 United States Government as represented by the
3
// Administrator of the National Aeronautics and Space Administration
4
// (NASA). All Rights Reserved.
5
//
6
// This software is distributed under the NASA Open Source Agreement
7
// (NOSA), version 1.3. The NOSA has been approved by the Open Source
8
// Initiative. See the file NOSA-1.3-JPF at the top of the distribution
9
// directory tree for the complete NOSA document.
10
//
11
// THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY
12
// KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT
13
// LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO
14
// SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
15
// A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT
16
// THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT
17
// DOCUMENTATION, IF PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE.
18
//
19
package DEOS;
20
21 /**
22  * DOCUMENT ME!
23  */

24 class ProcessConstraint {
25   int remainingNormalizedUtilization;
26   int initialNormalizedUtilization;
27
28   public ProcessConstraint (int theUtilization) {
29     //System.out.println("ProcessConstraint Constructor");
30
initialNormalizedUtilization = theUtilization;
31     remainingNormalizedUtilization = theUtilization;
32   }
33
34   public static int CPUTimeToNormalizedUtilization (int CPUTime,
35                                                     int periodIndex) {
36     int ticksPerPeriod = (Registry.periodDurationInMicroSecs(periodIndex) / Registry.periodDurationInMicroSecs(0));
37
38     //System.out.println("CPUTime " + CPUTime + " NormTime " +
39
// ((CPUTime + ticksPerPeriod -1) / ticksPerPeriod));
40
//return (CPUTime + ticksPerPeriod -1) / ticksPerPeriod;
41
return CPUTime / ticksPerPeriod;
42   }
43
44   public boolean allocateCPUForThread (int CPUTime, int periodIndex,
45                                        boolean isISR) {
46     int normalizedThreadUtilization = CPUTimeToNormalizedUtilization(CPUTime,
47                                                                      periodIndex);
48
49     //System.out.println("ProcessConstraint.allocateCPUForThread " +
50
// normalizedThreadUtilization + "(= norm)vs(remain =)"
51
// + remainingNormalizedUtilization);
52
if (normalizedThreadUtilization > remainingNormalizedUtilization) {
53       return false; // InsufficientCPU
54
}
55
56     remainingNormalizedUtilization -= normalizedThreadUtilization;
57
58     return true;
59   }
60
61   public void deallocateCPUForThread (int CPUTime, int periodIndex) {
62     remainingNormalizedUtilization += CPUTimeToNormalizedUtilization(CPUTime,
63                                                                      periodIndex);
64   }
65
66   public int oneHundredPercentUtilization () {
67     return Registry.periodDurationInMicroSecs(0);
68   }
69 }
Popular Tags