コード例 #1
0
 public boolean isTaskSchedulable(FixedPriorityProcessingLoad t) {
   long exectime_ns = cyclesToNanoseconds(t.getCycles());
   long responseTime = exectime_ns;
   long prevResponseTime;
   do {
     prevResponseTime = responseTime;
     responseTime = exectime_ns;
     // add all preemptions
     for (Iterator<FixedPriorityProcessingLoad> iter = tasksetDecreasingPriority.iterator();
         iter.hasNext(); ) {
       FixedPriorityProcessingLoad t1 = iter.next();
       // if we get to t we finish traversing higher-priority tasks
       if (t1.getUniqueID() == t.getUniqueID()) break;
       long numOfJobs = (long) Math.ceil((double) prevResponseTime / (double) t1.getPeriod());
       responseTime += numOfJobs * cyclesToNanoseconds(t1.getCycles());
     }
     // System.out.println("Response time current: " + responseTime + "prev:" + prevResponseTime);
   } while (responseTime != prevResponseTime && responseTime <= t.getDeadline());
   return (responseTime <= t.getDeadline());
 }