Library prosa.analysis.definitions.blocking_bound.elf

Blocking Bound for ELF

In this section, we define a bound on the length of a non-preemptive segment of a lower-priority job (w.r.t. a task tsk) under ELF scheduling.
Consider any type of tasks ...
  Context {Job : JobType}{Task : TaskType}.
  Context `{TaskCost Task}.
  Context `{TaskMaxNonpreemptiveSegment Task}.

... with relative priority points.
  Context `{PriorityPoint Task}.

Consider an arbitrary task set ts.
  Variable ts : list Task.

Let max_arrivals be a family of arrival curves.
  Context `{MaxArrivals Task}.

Consider any FP policy.
  Context {FP : FP_policy Task}.

Only other tasks that potentially release non-zero-cost jobs are relevant, so we define a predicate to exclude pathological cases.
Now we define a predicate to only include blocking_relevant tasks that have a lower priority than tsk.
Next we define a predicate for filtering blocking_relevant tasks that have the same priority as tsk.
For a job of a given task tsk, given the relative arrival offset A within its busy window, we define the following blocking bound. This bound assumes that task are independent (i.e., it does not account for possible blocking due to locking protocols).