private void buttonScheduleEDF_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)dataGridViewTasks.DataSource;
List<PeriodicTask> taskSet = new List<PeriodicTask>();
foreach (DataRow dr in dt.Rows)
taskSet.Add(new PeriodicTask(dr));
long LCM = GetLCM_forWorkload(dt);
List<double> listHardDeadline = new List<double>();
foreach (PeriodicTask task in taskSet)
{
listHardDeadline.AddRange(task.GetHardDeadline(0, LCM));
}
listHardDeadline.Sort();
List<List<double>> listListSoftDeadline = new List<List<double>>();
foreach (PeriodicTask task in taskSet)
{
listListSoftDeadline.Add(task.GetSoftDeadline(0, LCM));
}
bool bHard = true;
foreach (double deadline in listHardDeadline)
{
if (false == TimeDemandAnalysis(dt, 0, deadline))
{
Console.WriteLine("[Hard] Not schedulable at " + deadline);
bHard = false;
}
}
if (bHard == true)
Console.WriteLine("[Hard] Schedulable.");
bool bSoft = true;
for(int i = 0; i<listListSoftDeadline.Count; i++)
{
List<double> listSoftDeadline = listListSoftDeadline[i];
foreach (double deadline in listSoftDeadline)
{
if (false == TimeDemandAnalysis(dt, 0, deadline))
{
taskSet[i].MissCount++;
Console.WriteLine("[Task" + i + "] [Soft] Not schedulable at " + deadline);
bSoft = false;
}
else
{
taskSet[i].SuccessCount++;
}
}
int total = taskSet[i].MissCount + taskSet[i].SuccessCount;
Console.WriteLine("[Task" + i + "] " + taskSet[i].SuccessCount + "/" + total);
}
if (bSoft == true)
Console.WriteLine("[Soft] Schedulable.");
}