Library rt.restructuring.model.readiness.jitter



(* We define the readiness indicator function for models with release jitter
   (and no self-suspensions). *)


Section ReadinessOfJitteryJobs.
  (* Consider any kind of jobs... *)
  Context {Job : JobType}.

  (* ... and any kind of processor state. *)
  Context {PState : Type}.
  Context `{ProcessorState Job PState}.

  (* Supose jobs have an arrival time, a cost, and a release jitter bound. *)
  Context `{JobArrival Job} `{JobCost Job} `{JobJitter Job}.

  (* We say that a job is released at a time after its arrival if the job's
     release jitter has passed. *)

  Definition is_released (j : Job) (t : instant) := job_arrival j + job_jitter j t.

  (* A job that experiences jitter is ready only when the jitter-induced delay
     has passed after its arrival and if it is not yet complete. *)

  Global Instance jitter_ready_instance : JobReady Job PState :=
    {
      job_ready sched j t := is_released j t && ~~ completed_by sched j t
    }.

End ReadinessOfJitteryJobs.