Commit graph

140 commits

Author SHA1 Message Date
Tobias Reinhard
551d1da628 Renamed TCB_p predicate into uninit_TCB_p. 2022-10-27 12:58:18 -04:00
Tobias Reinhard
e238d791ab Moved stack predicate and lemmas to separate header. 2022-10-27 12:51:24 -04:00
Tobias Reinhard
2bcdc31ff8 Deleted deprecated version of pointer size axiom. 2022-10-27 12:45:38 -04:00
Tobias Reinhard
2b82220cec Refined stack predicate, validated it and verified pxPortInitialiseStack impl from RP2040 port. 2022-10-27 12:43:10 -04:00
Tobias Reinhard
b185c29a7b Typo. 2022-10-26 10:30:05 -04:00
Tobias Reinhard
b5f0b2f74d Added snippet from RP2040 port.c to verification code base to allow verification of contract from portable.h 2022-10-26 10:08:29 -04:00
Tobias Reinhard
8bb4f13ae5 Introduced new type-safe macro for unsigned pdFALSE and pdTRUE. 2022-10-26 09:14:11 -04:00
Tobias Reinhard
d3813796b3 Justified memset-ing pxNewTCB->ucNotifyState in prvInitialiseNewTask. 2022-10-26 08:33:47 -04:00
Tobias Reinhard
a78bc21b26 Simplified proof state in prvInitialiseNewTask. 2022-10-26 08:11:47 -04:00
Tobias Reinhard
40931d229d Justified memset of TCB fields in prvInitialiseNewTask.
Fields: `pxNewTCB->ucNotifyState` and `pxNewTCB->ulNotifiedValue`
2022-10-25 16:56:28 -04:00
Tobias Reinhard
8a8f0ab9b1 Proved memory safety of name-writing loop in prvInitialiseNewTask. 2022-10-25 14:57:26 -04:00
Tobias Reinhard
82be7cb23a Temporarily eliminated runtime assertion. 2022-10-25 14:40:50 -04:00
Tobias Reinhard
8b958c7834 Axiomatized knowledge about RP2040 architecture and added tmp workaround for over/underflows. 2022-10-25 14:34:01 -04:00
Tobias Reinhard
06bc0fbb2d Resolved VF reporting type errors for memset call and disproved some overflows and underflows. 2022-10-25 13:58:06 -04:00
Tobias Reinhard
1042ea8cf8 Refined task control block predicate TCB_p such that it can be used to justify memset-ing the stack. 2022-10-25 13:22:10 -04:00
Tobias Reinhard
80134a65ed VeriFast cannot handle casts of side-effectful expressions. 2022-10-25 12:49:33 -04:00
Tobias Reinhard
5a7916bff0 Added predicates to reason about TCB_t and substructures. 2022-10-24 16:17:41 -04:00
Tobias Reinhard
f1a0170309 Initialized memory safety proof for xTaskCreate. 2022-10-24 12:29:55 -04:00
Tobias Reinhard
47e6fa7398 Resolved VF parse errors: const pointers. 2022-10-22 14:02:04 -04:00
Tobias Reinhard
663ea1fb77 Resolved VF parse errors.
- const pointers
- inline assembler
- statements blocks consisting of multiple elements used in expression contexts, e.g., `({e1 e2;})`
- multiple pointer declarations to user-defined types in single line, i.e., `A *p1, *p2;`
2022-10-22 13:52:12 -04:00
Tobias Reinhard
55cfee8798 Resolved VF parse error: VF does not support const pointers. 2022-10-22 13:28:40 -04:00
Tobias Reinhard
342ab6463c Resolved VF parse error: VF does not support const pointers. 2022-10-22 13:00:58 -04:00
Tobias Reinhard
eeae596776 Replaced asm macro by failing assertion. 2022-10-22 12:39:54 -04:00
Tobias Reinhard
ee70a7815d Resolved VF parse error. Deleted functions involving inline assembler. 2022-10-13 12:52:57 -04:00
Tobias Reinhard
497a23d2eb Renamed VERIFAST_PROOF define into VERIFAST. 2022-10-11 15:32:57 -04:00
Tobias Reinhard
0c3f65d8ad Setup environment for VeriFast proof and start script for vfide. 2022-10-11 12:20:41 -04:00
Sudeep Mohanty
2eff037080
Update prvYieldCore() compile warning for single core targets (#505)
When configNUM_CORES is 1, prvYieldCore() generates an array subscript
outofbound error (-Warray-bounds) when compiled with GCC with space
optimization enabled (-Os).

This commit updates the code flow in prvYieldCore() to compile out
the part where yield is needed on the other core which is unnecessary
for single-core targets.
2022-06-22 10:03:44 +05:30
Darian
34b8e24d7c
Add support for newlib dynamic reentrancy (#496)
Previously, newlib's _impure_ptr was updated on every context switch
to point to the current task's _reent structure.

However, this behavior is no longer valid on multi-core systems due
to the fact that multiple cores can switch contexts at the same time,
thus leading to the corruption of the _impure_ptr.

However, Newlib can be compiled with __DYNAMIC_REENT__ enabled which
will cause newlib functions to call __getreent() instead in order to
obtain the required reent struct.

This commit adds dynamic reentrancy support to FreeRTOS:

- Added a configNEWLIB_REENTRANT_IS_DYNAMIC to enable dynamic reentrancy support
- _impure_ptr is no longer updated with reentrancy is dynamic
- Port must provide their own __getreent() that returns the current task's reent struct
2022-05-31 16:11:02 -07:00
Darian
a97741a08d
Add task creation with affinity functions (#470)
This commit adds the functions listed below. These functions allow
tasks to be created with their core affinity already set.

- xTaskCreateAffinitySet()
- xTaskCreateStaticAffinitySet()
- xTaskCreateRestrictedAffinitySet()
- xTaskCreateRestrictedStaticAffinitySet()
2022-03-18 10:16:21 -07:00
Darian
4446c8f0ea
Fix pxPreviousTCB compile warning (#464)
When compiling with configNUM_CORES == 1 and configUSE_CORE_AFFINITY == 1,
pxPreviousTCB will generate a "set but unused" warning.
2022-03-06 14:21:39 -08:00
Gaurav-Aggarwal-AWS
2b0fdf2a71
Add SMP in the License Header (#402)
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2021-10-13 18:38:24 -07:00
Gaurav-Aggarwal-AWS
970b678a0b
SMP version (#401)
* Update version number for SMP

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2021-10-13 18:23:03 -07:00
Gaurav-Aggarwal-AWS
7ce8266bc5
Update SMP docs (#400)
This commit adds the docs for newly added SMP APIs.

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2021-10-10 23:16:16 -07:00
N3xed
a2c8db1089
Move uxCoreAffinityMask after xMPUSettings (#372)
Allows for much easier assembly access to the field.
2021-07-29 23:58:47 -07:00
Joseph Julicher
b515641e0a
adding a minimal idle hook to the SMP port (#329)
* adjusting the kernel checks repo

* Added a minimal idle hook for all idle tasks
2021-05-19 16:19:57 -07:00
Joseph Julicher
0c1381311b
Merge branch 'smp' into smp 2021-05-19 10:10:36 -07:00
Joseph Julicher
d58750f5f9 Updated from upstream 2021-05-19 10:02:49 -07:00
Joseph Julicher
e71e702110 Static allocation and lightweight idle tasks (#323)
* added multiple idle tasks

* Added multiple IDLE tasks to non-static allocation

* Adjustments to tasks from PR review
2021-05-19 09:40:43 -07:00
Joseph Julicher
bc42e04850 Uncrustified tasks.c 2021-05-19 09:29:09 -07:00
Joseph Julicher
74f816ab40 Adjustments to tasks from PR review 2021-05-19 09:24:46 -07:00
Joseph Julicher
a65f379860 added multiple idle tasks 2021-05-19 09:21:09 -07:00
Joseph Julicher
f916ccf506 Static allocation and lightweight idle tasks (#323)
* added multiple idle tasks

* Added multiple IDLE tasks to non-static allocation

* Adjustments to tasks from PR review
2021-05-19 09:15:19 -07:00
Joseph Julicher
61fa224694 missed taskYield in minimalIDLE task 2021-05-19 08:54:22 -07:00
Joseph Julicher
106e15ea6b Uncrustified tasks.c 2021-05-19 08:38:58 -07:00
Joseph Julicher
87279a3dc7 Fixed static allocation internal array 2021-05-18 19:49:02 -07:00
Joseph Julicher
6369b03bd1 fixed additional bit mask test errors 2021-05-18 15:17:50 -07:00
Joseph Julicher
56d94df0a8 Fixed bit mask compare bug 2021-05-18 15:07:26 -07:00
Joseph Julicher
d59bfca4f9 converted exclusion to affinity 2021-05-13 17:20:41 -07:00
Joseph Julicher
ec943bcc1a
Static allocation and lightweight idle tasks (#323)
* added multiple idle tasks

* Added multiple IDLE tasks to non-static allocation

* Adjustments to tasks from PR review
2021-05-13 15:42:57 -07:00
Joseph Julicher
b9a17479a0 Adjustments to tasks from PR review 2021-05-12 17:01:59 -07:00