You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeRTOS-Kernel/portable/GCC
kar-rahul-aws 97050a17aa
Memory Protection Unit (MPU) Enhancements (#705)
Memory Protection Unit (MPU) Enhancements

This commit introduces a new MPU wrapper that places additional
restrictions on unprivileged tasks. The following is the list of changes
introduced with the new MPU wrapper:

1. Opaque and indirectly verifiable integers for kernel object handles:
   All the kernel object handles (for example, queue handles) are now
   opaque integers. Previously object handles were raw pointers.

2. Saving the task context in Task Control Block (TCB): When a task is
   swapped out by the scheduler, the task's context is now saved in its
   TCB. Previously the task's context was saved on its stack.

3. Execute system calls on a separate privileged only stack: FreeRTOS
   system calls, which execute with elevated privilege, now use a
   separate privileged only stack. Previously system calls used the
   calling task's stack. The application writer can control the size of
   the system call stack using new configSYSTEM_CALL_STACK_SIZE config
   macro.

4. Memory bounds checks: FreeRTOS system calls which accept a pointer
   and de-reference it, now verify that the calling task has required
   permissions to access the memory location referenced by the pointer.

5. System call restrictions: The following system calls are no longer
   available to unprivileged tasks:
    - vQueueDelete
    - xQueueCreateMutex
    - xQueueCreateMutexStatic
    - xQueueCreateCountingSemaphore
    - xQueueCreateCountingSemaphoreStatic
    - xQueueGenericCreate
    - xQueueGenericCreateStatic
    - xQueueCreateSet
    - xQueueRemoveFromSet
    - xQueueGenericReset
    - xTaskCreate
    - xTaskCreateStatic
    - vTaskDelete
    - vTaskPrioritySet
    - vTaskSuspendAll
    - xTaskResumeAll
    - xTaskGetHandle
    - xTaskCallApplicationTaskHook
    - vTaskList
    - vTaskGetRunTimeStats
    - xTaskCatchUpTicks
    - xEventGroupCreate
    - xEventGroupCreateStatic
    - vEventGroupDelete
    - xStreamBufferGenericCreate
    - xStreamBufferGenericCreateStatic
    - vStreamBufferDelete
    - xStreamBufferReset
   Also, an unprivileged task can no longer use vTaskSuspend to suspend
   any task other than itself.

We thank the following people for their inputs in these enhancements:
- David Reiss of Meta Platforms, Inc.
- Lan Luo, Xinhui Shao, Yumeng Wei, Zixia Liu, Huaiyu Yan and Zhen Ling
  of School of Computer Science and Engineering, Southeast University,
  China.
- Xinwen Fu of Department of Computer Science, University of
  Massachusetts Lowell, USA.
- Yuequi Chen, Zicheng Wang, Minghao Lin of University of Colorado
  Boulder, USA.
2 years ago
..
ARM7_AT91FR40008 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
ARM7_AT91SAM7S Fix typos in comments for the AT91SAM7S port (#695) 2 years ago
ARM7_LPC23xx tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
ARM7_LPC2000 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
ARM_CA9 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
ARM_CA53_64_BIT tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
ARM_CA53_64_BIT_SRE tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
ARM_CM0 Use portTASK_FUNCTION_PROTO to replace portNORETURN (#688) 2 years ago
ARM_CM3 Fix typo in check comment of configMAX_SYSCALL_INTERRUPT_PRIORITY (#690) 2 years ago
ARM_CM3_MPU Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM4F Fix typo in check comment of configMAX_SYSCALL_INTERRUPT_PRIORITY (#690) 2 years ago
ARM_CM4_MPU Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM7 Fix typo in check comment of configMAX_SYSCALL_INTERRUPT_PRIORITY (#690) 2 years ago
ARM_CM23 Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM23_NTZ/non_secure Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM33 Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM33_NTZ/non_secure Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM35P Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM35P_NTZ/non_secure Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM55 Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM55_NTZ/non_secure Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM85 Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CM85_NTZ/non_secure Memory Protection Unit (MPU) Enhancements (#705) 2 years ago
ARM_CR5 fix conversion warning (#658) 2 years ago
ARM_CRx_No_GIC tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
ATMega323 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
AVR32_UC3 Add constant type for portMAX_DELAY in port (#691) 2 years ago
AVR_AVRDx Remove AVR ports from main repo (#394) 3 years ago
AVR_Mega0 Remove AVR ports from main repo (#394) 3 years ago
CORTUS_APS3 Add constant type for portMAX_DELAY in port (#691) 2 years ago
ColdFire_V2 Add constant type for portMAX_DELAY in port (#691) 2 years ago
H8S2329 Add constant type for portMAX_DELAY in port (#691) 2 years ago
HCS12 Add constant type for portMAX_DELAY in port (#691) 2 years ago
IA32_flat tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
MCF5235 Replace two dashes and one whitespace with their corresponding ASCII characters. (#362) 4 years ago
MSP430F449 Add constant type for portMAX_DELAY in port (#691) 2 years ago
MicroBlaze tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
MicroBlazeV8 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
MicroBlazeV9 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
NiosII tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
PPC405_Xilinx Add constant type for portMAX_DELAY in port (#691) 2 years ago
PPC440_Xilinx Add constant type for portMAX_DELAY in port (#691) 2 years ago
RISC-V tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
RL78 Add constant type for portMAX_DELAY in port (#691) 2 years ago
RX100 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
RX200 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
RX600 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
RX600v2 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
RX700v3_DPFPU tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago
STR75x Add constant type for portMAX_DELAY in port (#691) 2 years ago
TriCore_1782 tree-wide: Unify formatting of __cplusplus ifdefs 2 years ago