Commit graph

171 commits

Author SHA1 Message Date
Tobias Reinhard
1d3fcdfc1f Reverted modified source and header files to last commit before we started the VeriFast proofs.
Files reset to commit 13f034eb74
2022-12-09 10:37:50 -05:00
Tobias Reinhard
eef76ea839 Simplified invariants. 2022-12-08 08:49:59 -05:00
Tobias Reinhard
99d46f9e51 Guarded unsafe decrements of uxTopReadyPriority and uxCurrentPriority 2022-12-08 08:45:17 -05:00
Tobias Reinhard
136b1d69b2 Updated ready list invariant from requiring exactly 1 idle task to configNUM_CORES idle tasks. 2022-12-07 07:34:46 -05:00
Tobias Reinhard
f98779f0cb Finished proof branch dealing with ready list reordering. Strict positivity of uxCurrentPriority remains to be proven. 2022-12-06 10:16:22 -05:00
Tobias Reinhard
ee2922ad80 Finished some proof branches in prvSelectHighestPriorityTask. 2022-12-05 14:46:11 -05:00
Tobias Reinhard
e71756e4cb Proved that decrementing uxTopReadyPriority does not lead to underflow. 2022-12-04 13:46:32 -05:00
Tobias Reinhard
00bb9d4a17 Verified runtime assertion that running task is either scheduled or yielding. 2022-12-04 11:54:07 -05:00
Tobias Reinhard
61bffc4617 Adapted loop invariant to reflect potential change of state lists. 2022-12-04 10:46:05 -05:00
Tobias Reinhard
b594404b59 Restored loop invariant at end of task-swapping branch 2022-12-04 10:33:36 -05:00
Tobias Reinhard
fbf4ba981f Added lemmas to update read permissions for unscheduled tasks after new task has been started. 2022-12-04 10:19:48 -05:00
Tobias Reinhard
6a0b2116fe Added lemmas to define updated state lists and reason locally about results. Local reasoning necessary to avoid auto-lemma application loops. 2022-12-04 09:17:13 -05:00
Tobias Reinhard
e403e8bc74 Added lemma to update the read permissions for unscheduled tasks after a task has been stopped. 2022-12-03 18:05:15 -05:00
Tobias Reinhard
0df45b465e Added lemmas that allow updating the lock invariant after a state update. 2022-12-03 14:54:26 -05:00
Tobias Reinhard
dda2dbda6f Added states list to lock invariant. 2022-12-03 10:04:04 -05:00
Tobias Reinhard
e4db1f8aba Refined lock invariant to only give read permission to all tasks and write permission to locally scheduled task 2022-12-03 08:58:19 -05:00
Tobias Reinhard
df780a1823 Introduced list of flat list of tasks in lock invariant. Simplifies access to sharedSeg_TCB_p chunks. 2022-12-02 14:59:06 -05:00
Tobias Reinhard
2c6d35943f Update tasks.c
Restored loop invariant at end of inner loop.
2022-12-01 15:08:43 -05:00
Tobias Reinhard
122ecdeac0 Proved that call to uxListRemove in prvSelectHighestPriorityTaskis safe. 2022-12-01 12:48:43 -05:00
Tobias Reinhard
cd3fa4e577 Added adaptation of Aalok's and Nathan's single-core proof for uxListRemove 2022-12-01 11:47:52 -05:00
Tobias Reinhard
fe5612cf4f Extended lock invariants to justify safe access to ready tasks as well as scheduled task. 2022-11-30 15:52:00 -05:00
Tobias Reinhard
78de786d89 Expanded lock invariant to give us access to shared segments of all ready TCBs. 2022-11-30 11:05:06 -05:00
Tobias Reinhard
e800ebd293 Exposed node owners in all predicates related to nodes. Adapted proofs to new predicates.
Changed predicates:
- `xLIST_ITEM`
- `DLS`
- `xLIST`
- `readyLists_p`
- `List_array_p`
2022-11-30 09:44:25 -05:00
Tobias Reinhard
22dc5c1287 Added proof idea and TODOs. Need to refactor single-core list predicates. 2022-11-29 13:53:53 -05:00
Tobias Reinhard
e8b8234416 Renamed predicates to comply with naming conventions 2022-11-29 09:47:50 -05:00
Tobias Reinhard
014acb9a00 Refactored lock predicates to improve readability. 2022-11-29 09:37:23 -05:00
Tobias Reinhard
c0df2a2894 Adapted proof of prvSelectHighestPriorityTask to use new DLS representation and opening & closing lemmas. 2022-11-28 10:55:39 -05:00
Tobias Reinhard
53189c46d4 Added new version of DLS opening lemma that reduces case splits in DLS proofs. Proved 3/4 of it. 2022-11-26 12:15:34 -05:00
Tobias Reinhard
49af8fd30f Finished verification of iteration updates in prvSelectHighestPriorityTask. 2022-11-23 15:18:11 -05:00
Tobias Reinhard
9d1b47c5e5 Added lemmas to simplify opening and closing DLS for cases of the form pxTask->pxNext 2022-11-23 13:53:10 -05:00
Tobias Reinhard
f44473b47c Applied closing lemmas. 2022-11-23 11:34:47 -05:00
Tobias Reinhard
397cb12abb Added lemmas to reason about updates to pointers in the ready list of the form pxTaskItem = pxTaskItem->pxNext 2022-11-22 13:08:22 -05:00
Tobias Reinhard
538f29caeb Closed some predicates to simplify proof state. 2022-11-22 10:17:37 -05:00
Tobias Reinhard
f7e537a19f Restructured proof.
New proof opens the DLS predicate to justify accesses to `pxTaskItem->next` and proves that `pxTaskItem->next` points to a valid list item.
2022-11-22 10:10:41 -05:00
Tobias Reinhard
49643b6f5e Partial proof justifying that updates of pxTaskItem in inner search loop in prvSelectHighestPriorityTask are safe. 2022-11-22 07:18:45 -05:00
Tobias Reinhard
35aef80072 Proved that pxTaskItem points to valid list item before inner search loop. 2022-11-21 14:02:23 -05:00
Tobias Reinhard
de3657239f Added minimal loop invariant to inner search loop in prvSelectHighestPriorityTask. 2022-11-21 11:32:25 -05:00
Tobias Reinhard
92a925bb59 Verified selection of initial task item in search loop in prvSelectHighestPriorityTask. 2022-11-21 09:45:22 -05:00
Tobias Reinhard
cf65065a0c Used single-core list predicate xLIST to express access permissions to ready lists in readyLists_p. 2022-11-18 16:27:38 -05:00
Tobias Reinhard
1888670656 Removed unneeded precondition 2022-11-18 13:35:06 -05:00
Tobias Reinhard
e629319b9f Relaxed contract of xTaskGetCurrentTaskHandle. 2022-11-18 09:32:24 -05:00
Tobias Reinhard
c9e61fce49 Introduced initial formulation of predicate to capture shared ready lists. 2022-11-18 09:22:31 -05:00
Tobias Reinhard
6dcaef48d6 Added loop invariant to main search loop in prvSelectHighestPriorityTask. 2022-11-17 14:24:44 -05:00
Tobias Reinhard
9b2871bc92 Formulated first version of contract for prvSelectHighestPriorityTask and adapted proof of vTaskSwitchContext accordingly. 2022-11-17 12:55:01 -05:00
Tobias Reinhard
fb01980b63 Verified new contract for xTaskGetCurrentTaskHandle. 2022-11-17 12:08:38 -05:00
Tobias Reinhard
63a8d73ecc Apdated proof for vTaskSwitchContext to rely on the proof of taskCHECK_FOR_STACK_OVERFLOW 2022-11-17 10:23:39 -05:00
Tobias Reinhard
d3bda01f16 Verified macro taskCHECK_FOR_STACK_OVERFLOW. 2022-11-17 09:20:21 -05:00
Tobias Reinhard
2f0b8bc82f Added proof steps outlining the verification of stack inspection. Also added TODOs concerning rewrites necessary for the verification of the macro. 2022-11-16 16:08:15 -05:00
Tobias Reinhard
c3c350f8dc vTaskSwitchContext now has access to the current task's stack. 2022-11-16 15:31:49 -05:00
Tobias Reinhard
b330847935 Added preliminary post condition for vTaskSwitchContext 2022-11-16 14:26:37 -05:00