Update README.md

This commit is contained in:
Tobias Reinhard 2022-12-31 16:41:43 -05:00
commit f335145676

View file

@ -293,16 +293,15 @@ Therefore, the proof's correctness relies on the correctness of our models.
- ### Locking discipline and lock invariants - ### Locking discipline and lock invariants
FreeRTOS' SMP implementation uses the following synchronization mechanisms: FreeRTOS' SMP implementation uses the following synchronization mechanisms:
- Deactivating interrupts: - Deactivating interrupts:
Some data is only meant to be accessed on a specific core C.
Some data is only meant to be accessed on a specific core C. Such data may only be accessed after interrupts on core C have been deactivated.
Such data may only be accessed after interrupts on core C have been deactivated. For instance the global array `pxCurrentTCBs` in `tasks.c` has an entry for
For instance the global array `pxCurrentTCBs` in `tasks.c` has an entry for every core.
every core. `pxCurrentTCBs[C]` stores a pointer to the task control block (TCB) of the task running on core C.
`pxCurrentTCBs[C]` stores a pointer to the task control block (TCB) of the task running on core C. Core C is always allowed to read `pxCurrentTCBs[C]`.
Core C is always allowed to read `pxCurrentTCBs[C]`. However, writing requires the interrupts on core C to be deactivated.
However, writing requires the interrupts on core C to be deactivated.
- task lock: - task lock:
The task lock is used to protect ciritical sections and resources from being accessed by multiple tasks simultaneously. The task lock is used to protect ciritical sections and resources from being accessed by multiple tasks simultaneously.