FreeRTOS-Kernel/Test/VeriFast/tasks/vTaskSwitchContext
2022-12-28 10:40:32 -05:00
..
custom_build_scripts_RP2040 Handled minor TODOs in proof headers. 2022-12-28 10:40:32 -05:00
demos Renamed VeriFast proof direcotry to comply with structure of main FreeRTOS repository. 2022-12-09 09:47:27 -05:00
include Handled minor TODOs in proof headers. 2022-12-28 10:40:32 -05:00
proof Handled minor TODOs in proof headers. 2022-12-28 10:40:32 -05:00
proof_setup Deleted deprecated proof header. 2022-12-28 10:13:20 -05:00
sdks Renamed VeriFast proof direcotry to comply with structure of main FreeRTOS repository. 2022-12-09 09:47:27 -05:00
src Deleted deprecated proof header. 2022-12-28 10:13:20 -05:00
stats Added statistics about the verified lines of code and the annotation overhead. 2022-12-21 15:04:52 -05:00
.gitignore Ignore generated states. 2022-12-12 10:04:32 -05:00
diff.sh Diff script now writes diff to stdout instead of file. Script returns error code if the diff is not empty. 2022-12-22 09:25:24 -05:00
paths.sh Diff script now writes diff to stdout instead of file. Script returns error code if the diff is not empty. 2022-12-22 09:25:24 -05:00
README.md Renamed VeriFast proof direcotry to comply with structure of main FreeRTOS repository. 2022-12-09 09:47:27 -05:00
run-verifast.sh Statup scripts ensure that output directories exist. 2022-12-13 10:05:22 -05:00
run-vfide.sh Statup scripts ensure that output directories exist. 2022-12-13 10:05:22 -05:00

FreeROTS VeriFast Proofs

This directory contains an unbounded proof memory safety and thread safety proof for the core of the task scheduler: vTaskSwitchContext The proof ensures that no call to vTaskSwitchContext that complies with the specified precondition results in unsafe memory accesses. It also ensures that concurrent instances of vTaskSwitchContext running on diffierent cores are mutually thread safe.

Proof Directory Structure

FreeRTOS-Kernel
│
│
│
├── tasks.c files
│   The base directory contains the source files, in particular `tasks.c`.
│   `tasks.c` has been annotated with the VeriFast proof steps necessary to
│   prove memory safety and thread safety of `vTaskSwitchContext`.
│   The proof uses many specifications and lemmas residing in 
│   `verification/verifast/proof_setup` and `verifcation/verifast/proofs`.
│
│
├── include
│   Contains the header files. Some of the header files have been annotated with
│   VeriFast contracts and proofs.
│
│
├── portable
│   └── Thirdparty
│       └── GCC
│           └── RP2040
│               Contains the Raspberry Pi Pico setup.
│
│
└── verification
    └── verifast
        ├── custom_build_scripts_RP2040
        │   Contains scripts to preprocess and rewrite the source code.
        │
        ├── demos
        │   Contains the FreeRTOS SMP demo. Our proofs use some of its 
        │   configuartion files.
        │
        ├── proof
        │   Contains the VeriFast proof files.
        │   │
        │   ├── *.h files
        │   │   Headers containing VeriFast formalizations and proofs.
        │   │
        │   ├── README.md
        │   │   Contains more details about the proof.
        │   │
        │   ├── single_core_proofs
        │   │   Contains the old list formalization and proofs written by
        │   │   Aalok Thakkar and Nathan Chong in 2020 for the single-core 
        │   │   setup.
        │   │
        │   └── single_core_proofs_extended
        │       Contains new proofs extending the single-core list
        │       formalization.
        │
        ├── proof_setup
        │   Contains config files for the proof. The proof assumes a setup for
        │   RP2040.
        │
        └── sdks
            Contains SDKs referenced by the proof setup.
            Some files are annotated with VeriFast contracts.

Proof Setup

The VeriFast proofs assume a setup for the Raspberry Pi Pico, i.e., RP2040.