# Library prosa.model.priority.gel

Require Export prosa.model.priority.classes.
Require Export BinInt.

From mathcomp Require Import ssrZ.

# GEL Priority Policy

We define the class of "Global-EDF-like" (GEL) priority policies, as first introduced by Leontyev et al. ("Multiprocessor Extensions to Real-Time Calculus", Real-Time Systems, 2011).
GEL scheduling is a (large) subset of the class of JLFP policies, which structurally resembles EDF scheduling, hence the name. Under GEL scheduling, each task has a constant "priority point offset." Each job's priority point is given by its arrival time plus its task's offset, with the interpretation that an earlier priority point implies higher priority.
EDF and FIFO are both special cases of GEL with the offset respectively being the relative deadline and zero.
To begin, we define the offset type. Note that an offset may be negative.
Definition offset := Z.

We define a task-model parameter to express each task's relative priority point.
Based on the task-level relative priority-point parameter, we define a job's absolute priority point in a straightforward manner. To this end, we need to introduce some context first.
For any type of tasks with relative priority points, ...
... a job's absolute priority point is given by its arrival time plus its task's relative priority point.
The resulting definition of GEL is straightforward: a job j1's priority is higher than or equal to a job j2's priority iff j1's absolute priority point is no later than j2's absolute priority point.
{
hep_job (j1 j2 : Job) := (job_priority_point j1 <=? job_priority_point j2)%Z
}.

In this section, we note three basic properties of the GEL policy: the priority relation is reflexive, transitive, and total.
Section PropertiesOfGEL.

Consider any type of tasks with relative priority points...