From 14475cb3177063320bd77c9092728e0d60e61a89 Mon Sep 17 00:00:00 2001 From: Felipe Cerqueira <felipec@mpi-sws.org> Date: Tue, 15 Sep 2015 09:39:44 +0200 Subject: [PATCH] Sketch response-time function --- BertognaResponseTimeDefs.v | 50 +++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/BertognaResponseTimeDefs.v b/BertognaResponseTimeDefs.v index f22b47d02..f086a5b3d 100644 --- a/BertognaResponseTimeDefs.v +++ b/BertognaResponseTimeDefs.v @@ -1,7 +1,7 @@ Require Import Vbase TaskDefs JobDefs TaskArrivalDefs ScheduleDefs PlatformDefs WorkloadDefs SchedulabilityDefs PriorityDefs ResponseTimeDefs divround helper - ssreflect ssrbool eqtype ssrnat seq fintype bigop div. + ssreflect ssrbool eqtype ssrnat seq fintype bigop div path. Module ResponseTimeAnalysis. @@ -600,8 +600,10 @@ Module ResponseTimeAnalysis. by rewrite leq_mul2r; apply/orP; right; apply INTERF. } - assert (EX: has (fun tsk_k => minn (x tsk_k) (R - task_cost tsk + 1) - > minn (workload_bound tsk_k) (R - task_cost tsk + 1)) ts). + assert (EX: has (fun tsk_k => + minn (x tsk_k) (R - task_cost tsk + 1) > + minn (workload_bound tsk_k) (R - task_cost tsk + 1)) + ts). { (* This part is crappy. I'll remove the ifs from the functions and try to keep it in the sum. *) @@ -661,5 +663,45 @@ Module ResponseTimeAnalysis. End UnderJLFPScheduling. End ResponseTimeBound. - + + Section ResponseTimeTaskset. + + Context {Job: eqType}. + Variable job_cost: Job -> nat. + Variable job_deadline: Job -> nat. + Variable job_task: Job -> sporadic_task. + + Context {arr_seq: arrival_sequence Job}. + + Hypothesis sporadic_tasks: sporadic_task_model arr_seq job_task. + + Variable num_cpus: nat. + Variable rate: Job -> processor num_cpus -> nat. + Variable sched: schedule num_cpus arr_seq. + + (* Assume an FP policy. *) + Variable higher_eq_priority: fp_policy. + + Variable ts: sporadic_taskset. + Definition sorted_ts := sorted higher_eq_priority ts. + + Definition max_steps (tsk: sporadic_task) := task_deadline tsk + 1. + + Fixpoint rec (step: nat) (tsk: sporadic_task) : nat := + match step with + | S step => task_cost tsk + + div_floor + (total_interference_bound_fp ts tsk + (fun tsk_high => task_deadline tsk_high) + (rec step tsk) higher_eq_priority) num_cpus + | 0 => task_cost tsk + end. + + Definition response_time_bound (tsk: sporadic_task) := + if rec (max_steps tsk) tsk <= task_deadline tsk then + Some (rec (max_steps tsk) tsk) + else None. + + End ResponseTimeTaskset. + End ResponseTimeAnalysis. \ No newline at end of file -- GitLab