package taskset; import joprt.RtThread; import com.jopdesign.sys.Const; import com.jopdesign.sys.Native; public class TaskMedium extends RtThread { private int overhead; private int startTask; private int endTask; private int taskTime; TaskMedium (int priority, int usPeriod, int msExecTime) { super(priority, usPeriod); taskTime = msExecTime; } public void run() { for (;;) { startTask = Native.rdMem(Const.IO_CNT); endTask = Native.rdMem(Const.IO_CNT); overhead = endTask - startTask; measure(); System.out.println(endTask - startTask - overhead); waitForNextPeriod(); } } private void measure() { // measured: 5000168 // wcet: 5000189 (min) // difference is 21 cycles: // return 21 startTask=Native.rdMem(Const.IO_CNT); doWork(taskTime); endTask=Native.rdMem(Const.IO_CNT); } private void doWork(int timelimit) { int val,ms,i,j; for (ms=0;ms<timelimit;ms++) { //@WCA loop=100 for (i=0;i<999;i++) { //@WCA loop=999 val = i; } for (j=0;j<1166;j++) { //@WCA loop=1166 val = j+1; } } } }