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()); }