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
Joseph Julicher
ad317efd62
Added multiple IDLE tasks to non-static allocation
2021-05-12 12:13:44 -07:00
Joseph Julicher
80457ca165
added multiple idle tasks
2021-05-12 12:03:08 -07:00