use priority as tiebreaker in EDF mode

This commit is contained in:
Kurt Wilson 2023-11-09 18:09:28 -05:00
parent daffbf55b8
commit 153c5a5bda

View file

@ -113,12 +113,14 @@ bool PriorityExecutableComparator::operator()(const PriorityExecutable *p1, cons
{ {
p2_deadline = p2->deadlines->front(); p2_deadline = p2->deadlines->front();
} }
if (p1_deadline == p2_deadline) if (p1_deadline == p2_deadline || p1->deadlines == p2->deadlines)
{ {
// this looks bad and is bad, BUT // this looks bad and is bad, BUT
// if we tell std::set these are equal, only one will be added, and we will lose the other. // if we tell std::set these are equal, only one will be added, and we will lose the other.
// we need _something_ to make them unique // we need _something_ to make them unique
return p1->executable_id < p2->executable_id; // since we'd rather finish a chain than start a new one, select the higher id
// return p1->executable_id > p2->executable_id;
return p1->priority < p2->priority;
} }
if (p1_deadline == 0) if (p1_deadline == 0)
{ {