Added loop invariant to main search loop in prvSelectHighestPriorityTask.

This commit is contained in:
Tobias Reinhard 2022-11-17 14:24:44 -05:00
parent 9b2871bc92
commit 6dcaef48d6
2 changed files with 34 additions and 1 deletions

View file

@ -88,7 +88,12 @@ predicate isrLockInv() =
fixpoint int taskISRLockID_f();
predicate taskISRLockInv() =
integer_((int*) &uxSchedulerSuspended, sizeof(UBaseType_t), false, _) &*&
integer_((void*) &uxSchedulerSuspended, sizeof(UBaseType_t), false, _)
&*&
// top ready priority must be in range
integer_((void*) &uxTopReadyPriority, sizeof(UBaseType_t), false, ?gTopReadyPriority) &*&
0 <= gTopReadyPriority &*& gTopReadyPriority < configMAX_PRIORITIES
&*&
readyLists_p() &*&
// Update: The current task on this core is interrupt protected.
// TODO: Exclude from `allTasks`.