Skip to content

Commit 56a360e

Browse files
chinglee-iotarchiguptcpluesspluessaggarg
authored
Merge main to SMP branch (#86)
* Fix array-bounds compiler warning on gcc11+ in list.h (FreeRTOS#580) listGET_OWNER_OF_NEXT_ENTRY computes `( pxConstList )->pxIndex->pxNext` after verifying that `( pxConstList )->pxIndex` points to `xListEnd`, which due to being a MiniListItem_t, can be shorter than a ListItem_t. Thus, `( pxConstList )->pxIndex` is a `ListItem_t *` that extends past the end of the `List_t` whose `xListEnd` it points to. This is fixed by accessing `pxNext` through a `MiniListItem_t` instead. * move the prototype for vApplicationIdleHook to task.h. (FreeRTOS#600) Co-authored-by: pluess <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Update equal priority task preemption (FreeRTOS#603) * vTaskResume and vTaskPrioritySet don't preempt equal priority task * Update vTaskResumeAll not to preempt task with equal priority * Fix in xTaskResumeFromISR * Update FreeRTOS/FreeRTOS build checks (FreeRTOS#613) This is needed to be compatible with the refactoring done in this PR - FreeRTOS/FreeRTOS#889 Signed-off-by: Gaurav Aggarwal <[email protected]> Signed-off-by: Gaurav Aggarwal <[email protected]> * Add ulTaskGetRunTimeCounter and ulTaskGetRunTimePercent (FreeRTOS#611) Allow ulTaskGetIdleRunTimeCounter and ulTaskGetIdleRunTimePercent to be used whenever configGENERATE_RUN_TIME_STATS is enabled, as this is the only requirement for these functions to work. * Fix some CMake documentation typos (FreeRTOS#616) The quick start instructions for CMake mention the "master" git branch which has been replaced by "main" in the current repo. The main CMakeLists.txt documents how to integrate a custom port. Fix a typo in the suggested CMake code. * Added support of 64bit events. (FreeRTOS#597) * Added support of 64bit even Signed-off-by: Cervenka Dusan <[email protected]> * Added missing brackets Signed-off-by: Cervenka Dusan <[email protected]> * Made proper name for tick macro. Signed-off-by: Cervenka Dusan <[email protected]> * Improved macro evaluation Signed-off-by: Cervenka Dusan <[email protected]> * Fixed missed port files + documentation Signed-off-by: Cervenka Dusan <[email protected]> * Changes made on PR Signed-off-by: Cervenka Dusan <[email protected]> * Fix macro definition. Signed-off-by: Cervenka Dusan <[email protected]> * Formatted code with uncrustify Signed-off-by: Cervenka Dusan <[email protected]> --------- Signed-off-by: Cervenka Dusan <[email protected]> * Introduce portMEMORY_BARRIER for Microblaze port. (FreeRTOS#621) The introduction of `portMEMORY_BARRIER` will ensure the places in the kernel use a barrier will work. For example, `xTaskResumeAll` has a memory barrier to ensure its correctness when compiled with optimization enabled. Without the barrier `xTaskResumeAll` can fail (e.g. start reading and writing to address 0 and/or infinite looping) when `xPendingReadyList` contains more than one task to restore. In `xTaskResumeAll` the compiler chooses to cache the `pxTCB` the first time through the loop for use in every subsequent loop. This is incorrect as the removal of `pxTCB->xEventListItem` will actually change the value of `pxTCB` if it was read again at the top of the loop. The barrier forces the compiler to read `pxTCB` again at the top of the loop. The compiler is operating correctly. The removal `pxTCB->xEventListItem` executes on a `List_t *` and `ListItem_t *`. This means that the compiler can assume that any `MiniListItem_t` values are unchanged by the loop (i.e. "strict-aliasing"). This allows the compiler to cache `pxTCB` as it is obtained via a `MiniListItem_t`. This is incorrect in this case because it is possible for a `ListItem_t *` to actually alias a `MiniListItem_t`. This is technically a "violation of aliasing rules" so we use the the barrier to disable the strict-aliasing optimization in this loop. * Do not call exit() on MSVC Port when calling vPortEndScheduler (FreeRTOS#624) * make port exitable * correctly set xPortRunning to False * add suggestions from Review Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * add suggestions from Review Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> --------- Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Update PR template to include checkbox for Unit Test related changes (FreeRTOS#627) * Fix build failure introduced in PR FreeRTOS#597 (FreeRTOS#629) The PR FreeRTOS#597 introduced a new config option configTICK_TYPE_WIDTH_IN_BITS which can be defined to one of the following: * TICK_TYPE_WIDTH_16_BITS - Tick type is 16 bit wide. * TICK_TYPE_WIDTH_32_BITS - Tick type is 32 bit wide. * TICK_TYPE_WIDTH_64_BITS - Tick type is 64 bit wide. Earlier we supported 16 and 32 bit width for tick type which was controlled using the config option configUSE_16_BIT_TICKS. The PR tried to maintain backward compatibility by honoring configUSE_16_BIT_TICKS. The backward compatibility did not work as expected though, as the macro configTICK_TYPE_WIDTH_IN_BITS was used before it was defined. This PR addresses it by ensuring that the macro configTICK_TYPE_WIDTH_IN_BITS is defined before it is used. Testing 1. configUSE_16_BIT_TICKS is defined to 0. Source (function xTaskIncrementTick in tasks.c): ``` const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; ``` Assembly: ``` 109e: 4b50 ldr r3, [pc, FreeRTOS#320] ; (11e0 <xTaskIncrementTick+0x150>) 10a0: f8d3 4134 ldr.w r4, [r3, FreeRTOS#308] ; 0x134 10a4: 3401 adds r4, #1 10a6: f8c3 4134 str.w r4, [r3, FreeRTOS#308] ; 0x134 ``` It is clear from assembly that the tick type is 32 bit. 2. configUSE_16_BIT_TICKS is defined to 1. Source (function xTaskIncrementTick in tasks.c): ``` const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; ``` Assembly: ``` 10e2: 4b53 ldr r3, [pc, FreeRTOS#332] ; (1230 <xTaskIncrementTick+0x15c>) 10e4: f8b3 4134 ldrh.w r4, [r3, FreeRTOS#308] ; 0x134 10e8: b2a4 uxth r4, r4 10ea: 3401 adds r4, #1 10ec: b2a4 uxth r4, r4 10ee: f8a3 4134 strh.w r4, [r3, FreeRTOS#308] ; 0x134 ``` It is clear from assembly that the tick type is 16 bit. 3. configTICK_TYPE_WIDTH_IN_BITS is defined to TICK_TYPE_WIDTH_16_BITS. Source (function xTaskIncrementTick in tasks.c): ``` const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; ``` Assembly: ``` 10e2: 4b53 ldr r3, [pc, FreeRTOS#332] ; (1230 <xTaskIncrementTick+0x15c>) 10e4: f8b3 4134 ldrh.w r4, [r3, FreeRTOS#308] ; 0x134 10e8: b2a4 uxth r4, r4 10ea: 3401 adds r4, #1 10ec: b2a4 uxth r4, r4 10ee: f8a3 4134 strh.w r4, [r3, FreeRTOS#308] ; 0x134 ``` It is clear from assembly that the tick type is 16 bit. 4. configTICK_TYPE_WIDTH_IN_BITS is defined to TICK_TYPE_WIDTH_32_BITS. Source (function xTaskIncrementTick in tasks.c): ``` const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; ``` Assembly: ``` 109e: 4b50 ldr r3, [pc, FreeRTOS#320] ; (11e0 <xTaskIncrementTick+0x150>) 10a0: f8d3 4134 ldr.w r4, [r3, FreeRTOS#308] ; 0x134 10a4: 3401 adds r4, #1 10a6: f8c3 4134 str.w r4, [r3, FreeRTOS#308] ; 0x134 ``` It is clear from assembly that the tick type is 32 bit. 5. configTICK_TYPE_WIDTH_IN_BITS is defined to TICK_TYPE_WIDTH_64_BITS. ``` #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width. ``` The testing was done for GCC/ARM_CM3 port which does not support 64 bit tick type. 6. Neither configUSE_16_BIT_TICKS nor configTICK_TYPE_WIDTH_IN_BITS defined. ``` #error Missing definition: One of configUSE_16_BIT_TICKS and configTICK_TYPE_WIDTH_IN_BITS must be defined in FreeRTOSConfig.h. See the Configuration section of the FreeRTOS API documentation for details. ``` 7. Both configUSE_16_BIT_TICKS and configTICK_TYPE_WIDTH_IN_BITS defined. ``` #error Only one of configUSE_16_BIT_TICKS and configTICK_TYPE_WIDTH_IN_BITS must be defined in FreeRTOSConfig.h. See the Configuration section of the FreeRTOS API documentation for details. ``` Related issue - FreeRTOS#628 Signed-off-by: Gaurav Aggarwal <[email protected]> * Feature/fixing clang gnu compiler warnings (FreeRTOS#620) * Adding in ability to support a library for freertos_config and a custom freertos_kernel_port (FreeRTOS#558) * Using single name definition for libraries everywhere. (FreeRTOS#558) * Supporting backwards compatibility with FREERTOS_CONFIG_FILE_DIRECTORY (FreeRTOS#571) * Removing compiler warnings for GNU and Clang. (FreeRTOS#571) * Added in documentation on how to consume from a main project. Added default PORT selection for native POSIX and MINGW platforms. * Only adding freertos_config if it exists. Removing auto generation of it from a FREERTOS_CONFIG_FILE_DIRECTORY. * Fixing clang and gnu compiler warnings. * Adding in project information and how to compile for GNU/clang * Fixing compiler issue with unused variable - no need to declare variable. * Adding in compile warnings for linux builds that kernel is okay with using. * Fixing more extra-semi-stmt clang warnings. * Moving definition of hooks into header files if features are enabled. * Fixing formatting with uncrustify. * Fixing merge conflicts with main merge. * Fixing compiler errors due to merge issues and formatting. * Fixing Line feeds. * Adding 'portNORETURN' into portmacros.h. Other Updates based on PR request * Further clean-up of clang and clang-tidy issues. * Removing compiler specific pragmas from common c files. * Fixing missing lexicon entry and uncrustify formatting changes. * Resolving merge issue multiple defnitions of proto for prvIdleTask * Fixing formatting issues that are not covered by uncrustify. Use clang-tidy instead if you want this level of control. * More uncrustify formatting issues. * Fixing extra bracket in #if statement. --------- Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * POSIX port fixes (FreeRTOS#626) * Fix types in POSIX port Use TaskFunction_t and StackType_t as other ports do. * Fix portTICK_RATE_MICROSECONDS in POSIX port --------- Co-authored-by: Jacques GUILLOU <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Cortex-M35P: Add Cortex-M35P port (FreeRTOS#631) * Cortex-M35P: Add Cortex-M35P port The Cortex-M35P support added to kernel. The port hasn't been validated yet with TF-M. Hence TF-M support is not included in this port. Signed-off-by: Devaraj Ranganna <[email protected]> * Add portNORETURN to the newly added portmacro.h Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Devaraj Ranganna <[email protected]> Signed-off-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]> Co-authored-by: kar-rahul-aws <[email protected]> * Introduced Github Status Badge for Unit Tests (FreeRTOS#634) * Introduced Github Status Badge for Unit Tests * Github status badge to point to latest run * Github status badge UT points to latest results * Fixed URL for Github Status badge --------- Co-authored-by: kar-rahul-aws <[email protected]> * Remove C99 requirement from CMake file (FreeRTOS#633) * Remove C99 requirement from CMake file The kernel source is C89 compliant and does not need C99. Signed-off-by: Gaurav Aggarwal <[email protected]> * Explicitly set C89 requirement for kernel Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> * Add Thread Local Storage (TLS) support using Picolibc functions (FreeRTOS#343) * Pass top of stack to configINIT_TLS_BLOCK Picolibc wants to allocate the per-task TLS block within the stack segment, so it will need to modify the top of stack value. Pass the pxTopOfStack variable to make this explicit. Signed-off-by: Keith Packard <[email protected]> * Move newlib-specific definitions to separate file This reduces the clutter in FreeRTOS.h caused by having newlib-specific macros present there. Signed-off-by: Keith Packard <[email protected]> * Make TLS code depend only on configUSE_C_RUNTIME_TLS_SUPPORT Remove reference to configUSE_NEWLIB_REENTRANT as that only works when using newlib. configUSE_C_RUNTIME_TLS_SUPPORT is always set when configUSE_NEWLIB_REENTRANT is set, so using both was redundant in that case. Signed-off-by: Keith Packard <[email protected]> * portable-ARC: Adapt ARC support to use generalized TLS support With generalized thread local storage (TLS) support present in the core, the two ARC ports need to have the changes to the TCB mirrored to them. Signed-off-by: Keith Packard <[email protected]> * Add Thread Local Storage (TLS) support using Picolibc functions This patch provides definitions of the general TLS support macros in terms of the Picolibc TLS support functions. Picolibc is normally configured to use TLS internally for all variables that are intended to be task-local, so these changes are necessary for picolibc to work correctly with FreeRTOS. The picolibc helper functions rely on elements within the linker script to arrange the TLS data in memory and define some symbols. Applications wanting to use this mechanism will need changes in their linker script when migrating to picolibc. Signed-off-by: Keith Packard <[email protected]> --------- Signed-off-by: Keith Packard <[email protected]> Co-authored-by: Keith Packard <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Interrupt priority assert improvements for CM3/4/7 (FreeRTOS#602) * Interrupt priority assert improvements for CM3/4/7 In the ARM_CM3, ARM_CM4, and ARM_CM7 ports, change the assertion that `configMAX_SYSCALL_INTERRUPT_PRIORITY` is nonzero to account for the number of priority bits implemented by the hardware. Change these ports to also use the lowest priority for PendSV and SysTick, ignoring `configKERNEL_INTERRUPT_PRIORITY`. * Remove not needed configKERNEL_INTERRUPT_PRIORITY define Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]> * Introduced code coverage status badge (FreeRTOS#635) * Introduced code coverage status badge * Trying to fix the URL checker issue * Fix URL check Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * added portPOINTER_SIZE_TYPE and SIZE_MAX definition to PIC24/dsPIC port (FreeRTOS#636) * added portPOINTER_SIZE_TYPE definition to PIC24/dsPIC port * Added SIZE_MAX definition to PIC24/dsPIC33 * Fix TLS and stack alignment when using picolibc (FreeRTOS#637) Both the TLS block and stack must be correctly aligned when using picolibc. The architecture stack alignment is represented by the portBYTE_ALIGNMENT_MASK and the TLS block alignment is provided by the Picolibc _tls_align() inline function for Picolibc version 1.8 and above. For older versions of Picolibc, we'll assume that the TLS block requires the same alignment as the stack. For downward growing stacks, this requires aligning the start of the TLS block to the maximum of the stack alignment and the TLS alignment. With this, both the TLS block and stack will now be correctly aligned. For upward growing stacks, the two areas must be aligned independently; the TLS block is aligned from the start of the stack, then the tls space is allocated, and then the stack is aligned above that. It's probably useful to know here that the linker ensures that variables within the TLS block are assigned offsets that match their alignment requirements. If the TLS block itself is correctly aligned, then everything within will also be. I have only tested the downward growing stack branch of this patch. Signed-off-by: Keith Packard <[email protected]> Co-authored-by: Keith Packard <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Enable building the GCC Cortex-R5 port without an FPU (FreeRTOS#586) * Ensure configUSE_TASK_FPU_SUPPORT option is set correctly If one does enable the FPU of the Cortex-R5 processor, then the GCC compiler will define the macro __ARM_FP. This can be used to ensure, that the configUSE_TASK_FPU_SUPPORT is set accordingly. * Enable the implementation of vPortTaskUsesFPU only if configUSE_TASK_FPU_SUPPORT is set to 1 * Remove error case in pxPortInitialiseStack The case of configUSE_TASK_FPU_SUPPORT is 0 is now handled * Enable access to FPU registers only if FPU is enabled * Make minor formating changes * Format ARM Cortex-R5 port * Address review comments from @ChristosZosi * Minor code review suggestions Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Christos Zosimidis <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]> * Fix freertos_kernel cmake property, Posix Port (FreeRTOS#640) * Fix freertos_kernel cmake property, Posix Port * Moves the `set_property()` call below the target definition in top level CMakeLists file * Corrects billion value from `ULL` suffix (not C90 compliant) to `UL` suffix with cast to uint64_t * Add blank line to CMakeLists.txt * Add missing FreeRTOS+ defines * Run kernel demos and unit tests for PR changes (FreeRTOS#645) * Run kernel demos and unit tests for PR changes Kernel demos check builds multiple demos from FreeRTOS/FreeRTOS and unit tests check runs unit tests in FreeRTOS/FreeRTOS. Both of these checks currently use main branch of FreeRTOS-Kernel. This commits updates these checks to use the changes in the PR. Signed-off-by: Gaurav Aggarwal <[email protected]> * Do not specify PR SHA explicitly as that is default Signed-off-by: Gaurav Aggarwal <[email protected]> * Remove explicit PR SHA from kernel checks Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> * Add functions to get the buffers of statically created objects (FreeRTOS#641) Added various ...GetStaticBuffer() functions to get the buffers of statically created objects. --------- Co-authored-by: Paul Bartell <[email protected]> Co-authored-by: Nikhil Kamath <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]> * Cortex-M Assert when NVIC implements 8 PRIO bits (FreeRTOS#639) * Cortex-M Assert when NVIC implements 8 PRIO bits * Fix CM3 ports * Fix ARM_CM3_MPU * Fix ARM CM3 * Fix ARM_CM4_MPU * Fix ARM_CM4 * Fix GCC ARM_CM7 * Fix IAR ARM ports * Uncrustify changes * Fix MikroC_ARM_CM4F port * Fix MikroC_ARM_CM4F port-(2) * Fix RVDS ARM ports * Revert changes for Tasking/ARM_CM4F port * Revert changes for Tasking/ARM_CM4F port-(2) * Update port.c Fix GCC/ARM_CM4F port * Update port.c * update GCC\ARM_CM4F port * update port.c * Assert to check configMAX_SYSCALL_INTERRUPT_PRIORITY is set to higher priority * Fix merge error: remove duplicate code * Fix typos --------- Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> Co-authored-by: Ubuntu <[email protected]> * Remove C90 requirement from CMakeLists (FreeRTOS#649) This is needed as it is breaking projects - https://forums.freertos.org/t/freertos-gcc-cmake/16984 We will re-evaluate and accordingly add this later. Signed-off-by: Gaurav Aggarwal <[email protected]> * Only add alignment padding when needed (FreeRTOS#650) Heap 4 and Heap 5 add some padding to ensure that the allocated blocks are always aligned to portBYTE_ALIGNMENT bytes. The code until now was adding padding always even if the resulting block was already aligned. This commits updates the code to only add padding if the resulting block is not aligned. Signed-off-by: Gaurav Aggarwal <[email protected]> * add a missing comma (FreeRTOS#651) * fix conversion warning (FreeRTOS#658) FreeRTOS-Kernel/portable/GCC/ARM_CM4F/port.c:399:41: error: conversion from 'uint32_t' {aka 'long unsigned int'} to 'uint8_t' {aka 'unsigned char'} may change value [-Werror=conversion] Signed-off-by: Vo Trung Chi <[email protected]> * ARMv7M: Adjust implemented priority bit assertions (FreeRTOS#665) Adjust assertions related to the CMSIS __NVIC_PRIO_BITS and FreeRTOS configPRIO_BITS configuration macros such that these macros specify the minimum number of implemented priority bits supported by a config build rather than the exact number of implemented priority bits. Related to Qemu issue FreeRTOS#1122 * Format portmacro.h in arm CM0 ports * portable/ARM_CM0: Add xPortIsInsideInterrupt Add missing xPortIsInsideInterrupt function to Cortex-M0 port. * tree-wide: Unify formatting of __cplusplus ifdefs * Paranthesize expression-like macro (FreeRTOS#668) * Updated tasks.c checks for scheduler suspension (FreeRTOS#670) This commit updates the checks for the variable uxSchedulerSuspended in tasks.c module to use a uniform format. Signed-off-by: Sudeep Mohanty <[email protected]> * Fix cast alignment warning (FreeRTOS#669) * Fix cast alignment warning Without this change, the code produces the following warning when compiled with `-Wcast-align` flag: ``` cast increases required alignment of target type ``` Signed-off-by: Gaurav Aggarwal <[email protected]> * Align StackSize and StackAddress for macOS (FreeRTOS#674) * Armv8-M (except Cortex-M23) interrupt priority checking (FreeRTOS#673) * Armv8-M: Formatting changes Signed-off-by: Devaraj Ranganna <[email protected]> * Armv8-M: Add support for interrupt priority check FreeRTOS provides `FromISR` system calls which can be called directly from interrupt service routines. It is crucial that the priority of these ISRs is set to same or lower value (numerically higher) than that of `configMAX_SYSCALL_INTERRUPT_PRIORITY`. For more information refer to https://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. Add a check to trigger an assert when an ISR with priority higher (numerically lower) than `configMAX_SYSCALL_INTERRUPT_PRIORITY` calls `FromISR` system calls if `configASSERT` macro is defined. In addition, add a config option `configQEMU_DISABLE_INTERRUPT_PRIO_BITS_CHECK` to disable interrupt priority check while running on QEMU. Based on the discussion https://gitlab.com/qemu-project/qemu/-/issues/1122, The interrupt priority bits in QEMU do not match the real hardware. Therefore the assert that checks the number of implemented bits and __NVIC_PRIO_BITS will always fail. The config option `configQEMU_DISABLE_INTERRUPT_PRIO_BITS_CHECK` should be defined in the `FreeRTOSConfig.h` for QEMU targets. Signed-off-by: Devaraj Ranganna <[email protected]> * Use SHPR2 for calculating interrupt priority bits This removes the dependency on the secure software to mark the interrupt as non-secure. Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Devaraj Ranganna <[email protected]> Signed-off-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Use the extended movx instruction instead of mov (FreeRTOS#676) The following is from the MSP430X instruction set - ``` MOVX.W Move source word to destination word. The source operand is copied to the destination. The source operand is not affected. Both operands may be located in the full address space. ``` The movx instruction allows both the operands to be located in the full address space and therefore, works with large data model as well. Signed-off-by: Gaurav Aggarwal <[email protected]> * Fix eTaskGetState for pending ready tasks (FreeRTOS#679) This commit fixes eTaskGetState so that eReady is returned for pending ready tasks. Co-authored-by: Darian Leung <[email protected]> * Generates SBOM after source files are updated with release tag (FreeRTOS#680) * update source file with release version info before SBOM generation * delete tag branch during cleanup * Add back croutines by reverting PR#590 (FreeRTOS#685) * Add croutines to the code base * Add croutine changes to cmake, lexicon and readme * Add croutine file to portable cmake file * Add back more references from PR 591 * Remove __NVIC_PRIO_BITS and configPRIO_BITS check in port (FreeRTOS#683) * Remove __NVIC_PRIO_BITS and configPRIO_BITS check in CM3, CM4 and ARMv8. * Add hardware not implemented bits check. These bits should be zero. --------- Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Use UBaseType_t as interrupt mask (FreeRTOS#689) * Use UBaseType_t as interrupt mask * Update GCC posix port to use UBaseType_t as interrupt mask * Fix clang warning in croutine and stream buffer (FreeRTOS#686) * Fix document warning in croutine * Fix cast-qual warning in stream buffer * Use portTASK_FUNCTION_PROTO to replace portNORETURN (FreeRTOS#688) * Use portTASK_FUNCTION_PROTO to replace portNORETURN * Fix typo in check comment of configMAX_SYSCALL_INTERRUPT_PRIORITY (FreeRTOS#690) * Add constant type for portMAX_DELAY in port (FreeRTOS#691) Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Update static stream buffer size check (FreeRTOS#693) * Use volatile size instead of sizeof directly to prevent always true/false warning * Fix typos in comments for the AT91SAM7S port (FreeRTOS#695) Co-authored-by: RichardBarry <[email protected]> * Fix FreeRTOS#697: Missing portPOINTER_SIZE_TYPE definition for ATmega port (FreeRTOS#698) * Remove empty expression statement compiler warning (FreeRTOS#692) * Add do while( 0 ) loop for empty expression statement compiler warning * Update uxTaskGetSystemState for tasks in pending ready list (FreeRTOS#702) * Update uxTaskGetSystemState to sync with eTaskGetState * Update in vTaskGetInfo for tasks in pending ready list should be in ready state. * Fix circular dependency in CMake project (FreeRTOS#700) * Fix circular dependency in cmake project Fix for FreeRTOS#687 In order for custom ports to also break the cycle, they must link against freertos_kernel_include instead of freertos_kernel. * Simplify include path * Memory Protection Unit (MPU) Enhancements (FreeRTOS#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. * Update History for Version 10.6.0 (FreeRTOS#706) Signed-off-by: kar-rahul-aws <[email protected]> * Fixed compile options polluting project (FreeRTOS#694) * Fixed compile options polluting project Moved add_library higher * Apply suggestions from code review Co-authored-by: Paul Bartell <[email protected]> * fixed cmakelists keeping in mind the suggestions --------- Co-authored-by: Paul Bartell <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> Co-authored-by: Aniruddha Kanhere <[email protected]> * Fix the comments in the CM3 and CM4 MPU Ports about the MPU Region numbers being loaded (FreeRTOS#707) Co-authored-by: Soren Ptak <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Update xSemaphoreGetStaticBuffer prototype in comment (FreeRTOS#704) Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> * Correct the misspelled name (FreeRTOS#708) Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> Signed-off-by: Cervenka Dusan <[email protected]> Signed-off-by: Devaraj Ranganna <[email protected]> Signed-off-by: Keith Packard <[email protected]> Signed-off-by: Vo Trung Chi <[email protected]> Signed-off-by: Sudeep Mohanty <[email protected]> Signed-off-by: kar-rahul-aws <[email protected]> Co-authored-by: Archit Gupta <[email protected]> Co-authored-by: tcpluess <[email protected]> Co-authored-by: pluess <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> Co-authored-by: Chris Copeland <[email protected]> Co-authored-by: David J. Fiddes <[email protected]> Co-authored-by: Dusan Cervenka <[email protected]> Co-authored-by: bbain <[email protected]> Co-authored-by: Ju1He1 <[email protected]> Co-authored-by: Aniruddha Kanhere <[email protected]> Co-authored-by: phelter <[email protected]> Co-authored-by: jacky309 <[email protected]> Co-authored-by: Jacques GUILLOU <[email protected]> Co-authored-by: Devaraj Ranganna <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]> Co-authored-by: kar-rahul-aws <[email protected]> Co-authored-by: Nikhil Kamath <[email protected]> Co-authored-by: Keith Packard <[email protected]> Co-authored-by: Keith Packard <[email protected]> Co-authored-by: Joseph Julicher <[email protected]> Co-authored-by: Paul Bartell <[email protected]> Co-authored-by: Christos Zosimidis <[email protected]> Co-authored-by: Kody Stribrny <[email protected]> Co-authored-by: Holden <holden-zenithaerotech.com> Co-authored-by: Darian <[email protected]> Co-authored-by: Ubuntu <[email protected]> Co-authored-by: Nicolas <[email protected]> Co-authored-by: Vo Trung Chi <[email protected]> Co-authored-by: Sudeep Mohanty <[email protected]> Co-authored-by: Monika Singh <[email protected]> Co-authored-by: Darian Leung <[email protected]> Co-authored-by: Tony Josi <[email protected]> Co-authored-by: Evgeny Ermakov <[email protected]> Co-authored-by: RichardBarry <[email protected]> Co-authored-by: Joris Putcuyps <[email protected]> Co-authored-by: Patrick Cook <[email protected]> Co-authored-by: Mr. Jake <[email protected]> Co-authored-by: Paul Bartell <[email protected]> Co-authored-by: Soren Ptak <[email protected]> Co-authored-by: Soren Ptak <[email protected]>
1 parent b184cb7 commit 56a360e

File tree

200 files changed

+96733
-7659
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

200 files changed

+96733
-7659
lines changed

.github/lexicon.txt

+26-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
GNU nano 5.9 .github/lexicon.txt Modified
12
aa
23
aaaa
34
aarch
@@ -317,6 +318,7 @@ coproc
317318
coprocessor
318319
coprocessors
319320
coreid
321+
coroutinehandle
320322
coverity
321323
covfs
322324
cp
@@ -344,10 +346,16 @@ cpu
344346
cr
345347
crc
346348
crcb
349+
crcoroutine
350+
crdelay
347351
creadonlyarray
348352
creadwritearray
349353
createevent
354+
crend
350355
crgint
356+
croutine
357+
crqueue
358+
crstart
351359
crt
352360
crtv
353361
crxedchar
@@ -1526,18 +1534,21 @@ prvcheckforrunstatechange
15261534
prvcheckinterfaces
15271535
prvchecktaskswaitingtermination
15281536
prvcopydatatoqueue
1537+
prvcoroutineflashtask
1538+
prvcoroutineflashworktask
15291539
prvdeletetcb
15301540
prvexitfunction
15311541
prvgettimens
15321542
prvheapinit
15331543
prvidletask
1544+
prvinitialisecoroutinelists
15341545
prvinitialisemutex
15351546
prvinitialisenewstreambuffer
15361547
prvinitialisenewtimer
15371548
prvinsertblockintofreelist
15381549
prvlockqueue
1539-
prvnotifyqueuesetcontainer
15401550
prvminimalidletask
1551+
prvnotifyqueuesetcontainer
15411552
prvportmalloc
15421553
prvportresetpic
15431554
prvprocesssimulatedinterrupts
@@ -1647,11 +1658,15 @@ pxblocktoinsert
16471658
pxcallbackfunction
16481659
pxcode
16491660
pxcontainer
1661+
pxcoroutinecode
1662+
pxcoroutinewoken
16501663
pxcrcb
16511664
pxcreatedtask
1665+
pxcurrentcoroutine
16521666
pxcurrenttcb
16531667
pxcurrenttcbconst
16541668
pxcurrenttimerlist
1669+
pxdelayedcoroutinelist
16551670
pxdelayedtasklist
16561671
pxend
16571672
pxendofstack
@@ -1686,6 +1701,7 @@ pxnextfreeblock
16861701
pxnexttcb
16871702
pxoriginalsp
16881703
pxoriginaltos
1704+
pxoverflowdelayedcoroutinelist
16891705
pxoverflowdelayedtasklist
16901706
pxowner
16911707
pxportinitialisestack
@@ -1695,6 +1711,7 @@ pxqueue
16951711
pxqueuebuffer
16961712
pxqueuesetcontainer
16971713
pxramstack
1714+
pxreadycoroutinelists
16981715
pxreadytaskslists
16991716
pxreceivecompletedcallback
17001717
pxregions
@@ -2444,6 +2461,7 @@ uxprevschedulersuspended
24442461
uxpriority
24452462
uxprioritytouse
24462463
uxqueue
2464+
uxqueuegetqueueitemsize
24472465
uxqueuelength
24482466
uxqueuemessageswaiting
24492467
uxqueuespacesavailable
@@ -2474,6 +2492,7 @@ uxtopreadypriority
24742492
uxtopusedpriority
24752493
uxvariabletoincrement
24762494
uxwantedbytes
2495+
vacoroutine
24772496
vadifferenttask
24782497
vafunction
24792498
val
@@ -2504,6 +2523,7 @@ vbr
25042523
vbufferisr
25052524
vcallbackfunction
25062525
vclearinterruptmask
2526+
vcoroutineschedule
25072527
vddcore
25082528
vec
25092529
vectactive
@@ -2513,6 +2533,7 @@ ver
25132533
veventgroupclearbitscallback
25142534
veventgroupdelete
25152535
veventgroupsetbitscallback
2536+
vflashcoroutine
25162537
vfp
25172538
vfunction
25182539
vic
@@ -2575,12 +2596,14 @@ vqueuedelete
25752596
vqueueunregisterqueue
25762597
vr
25772598
vraiseprivilege
2599+
vreceivingcoroutine
25782600
vreg
25792601
vresetprivilege
25802602
vrestorecontextoffirsttask
25812603
vrpm
25822604
vsemaphorecreatebinary
25832605
vsemaphoredelete
2606+
vsendingcoroutine
25842607
vsetbacklightstate
25852608
vsoftwareinterruptentry
25862609
vstartfirsttask
@@ -2734,6 +2757,7 @@ xdd
27342757
xdddd
27352758
xdeadbeef
27362759
xdelay
2760+
xdelayedcoroutinelist
27372761
xdelayedtasklist
27382762
xdelaytime
27392763
xe
@@ -2888,6 +2912,7 @@ xpar
28882912
xparameters
28892913
xpendedcounts
28902914
xpendedticks
2915+
xpendingreadycoroutinelist
28912916
xpendingreadylist
28922917
xperiod
28932918
xportgetcoreid

.github/workflows/auto-release.yml

+20-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ jobs:
2525
- name: Tool Setup
2626
uses: actions/setup-python@v2
2727
with:
28-
python-version: 3.7.10
2928
architecture: x64
3029
env:
3130
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -51,7 +50,18 @@ jobs:
5150
5251
- name: create a new branch that references commit id
5352
working-directory: ./local_kernel
54-
run: git checkout -b ${{ github.event.inputs.version_number }} ${{ github.event.inputs.commit_id }}
53+
run: |
54+
git checkout -b ${{ github.event.inputs.version_number }} ${{ github.event.inputs.commit_id }}
55+
echo "COMMIT_SHA_1=$(git rev-parse HEAD)" >> $GITHUB_ENV
56+
57+
- name: Update source files with version info
58+
run: |
59+
# Install deps and run
60+
pip install -r ./tools/.github/scripts/release-requirements.txt
61+
./tools/.github/scripts/update_src_version.py FreeRTOS --kernel-repo-path=local_kernel --kernel-commit=${{ env.COMMIT_SHA_1 }} --new-kernel-version=${{ github.event.inputs.version_number }} --new-kernel-main-br-version=${{ github.event.inputs.main_br_version }}
62+
exit $?
63+
env:
64+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5565

5666
- name: Generate SBOM
5767
uses: FreeRTOS/CI-CD-Github-Actions/sbom-generator@main
@@ -65,13 +75,19 @@ jobs:
6575
git add .
6676
git commit -m 'Update SBOM'
6777
git push -u origin ${{ github.event.inputs.version_number }}
68-
echo "COMMIT_SHA=$(git rev-parse HEAD)" >> $GITHUB_ENV
78+
echo "COMMIT_SHA_2=$(git rev-parse HEAD)" >> $GITHUB_ENV
6979
7080
- name: Release
7181
run: |
7282
# Install deps and run
7383
pip install -r ./tools/.github/scripts/release-requirements.txt
74-
./tools/.github/scripts/release.py FreeRTOS --kernel-repo-path=local_kernel --kernel-commit=${{ env.COMMIT_SHA }} --new-kernel-version=${{ github.event.inputs.version_number }} --new-kernel-main-br-version=${{ github.event.inputs.main_br_version }}
84+
./tools/.github/scripts/release.py FreeRTOS --kernel-repo-path=local_kernel --kernel-commit=${{ env.COMMIT_SHA_2 }} --new-kernel-version=${{ github.event.inputs.version_number }} --new-kernel-main-br-version=${{ github.event.inputs.main_br_version }}
7585
exit $?
7686
env:
7787
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
88+
89+
- name: Cleanup
90+
working-directory: ./local_kernel
91+
run: |
92+
# Delete the branch created for Tag by SBOM generator
93+
git push -u origin --delete ${{ github.event.inputs.version_number }}

CMakeLists.txt

+9-10
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,12 @@ elseif((FREERTOS_PORT STREQUAL "A_CUSTOM_PORT") AND (NOT TARGET freertos_kernel_
225225
" .)\n"
226226
" target_link_libraries(freertos_kernel_port\n"
227227
" PRIVATE\n"
228-
" freertos_kernel)")
228+
" freertos_kernel_include)")
229229
endif()
230230

231+
232+
add_library(freertos_kernel STATIC)
233+
231234
########################################################################
232235
# Overall Compile Options
233236
# Note the compile option strategy is to error on everything and then
@@ -248,7 +251,7 @@ endif()
248251
# MSVC | MSVC # Note only for MinGW?
249252
# Renesas | ?TBD?
250253

251-
add_compile_options(
254+
target_compile_options(freertos_kernel PRIVATE
252255
### Gnu/Clang C Options
253256
$<$<COMPILE_LANG_AND_ID:C,GNU>:-fdiagnostics-color=always>
254257
$<$<COMPILE_LANG_AND_ID:C,Clang>:-fcolor-diagnostics>
@@ -264,9 +267,11 @@ add_compile_options(
264267

265268

266269
########################################################################
270+
add_subdirectory(include)
267271
add_subdirectory(portable)
268272

269-
add_library(freertos_kernel STATIC
273+
target_sources(freertos_kernel PRIVATE
274+
croutine.c
270275
event_groups.c
271276
list.c
272277
queue.c
@@ -278,17 +283,11 @@ add_library(freertos_kernel STATIC
278283
$<IF:$<BOOL:$<FILTER:${FREERTOS_HEAP},EXCLUDE,^[1-5]$>>,${FREERTOS_HEAP},portable/MemMang/heap_${FREERTOS_HEAP}.c>
279284
)
280285

281-
target_include_directories(freertos_kernel
282-
PUBLIC
283-
include
284-
# Note: DEPRECATED but still supported, may be removed in a future release.
285-
$<$<NOT:$<TARGET_EXISTS:freertos_config>>:${FREERTOS_CONFIG_FILE_DIRECTORY}>
286-
)
287286

288287
target_link_libraries(freertos_kernel
289288
PUBLIC
290-
$<$<TARGET_EXISTS:freertos_config>:freertos_config>
291289
freertos_kernel_port
290+
freertos_kernel_include
292291
)
293292

294293
########################################################################

History.txt

+111
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,116 @@
11
Documentation and download available at https://www.FreeRTOS.org/
22

3+
Changes between FreeRTOS V10.5.1 and FreeRTOS 10.6.0 released July 13, 2023
4+
5+
+ Add a new MPU wrapper that places additional restrictions on unprivileged
6+
tasks. The following is the list of changes introduced with the new MPU
7+
wrapper:
8+
9+
1. Opaque and indirectly verifiable integers for kernel object handles:
10+
All the kernel object handles (for example, queue handles) are now
11+
opaque integers. Previously object handles were raw pointers.
12+
2. Save the task context in Task Control Block (TCB): When a task is
13+
swapped out by the scheduler, the task's context is now saved in its
14+
TCB. Previously the task's context was saved on its stack.
15+
3. Execute system calls on a separate privileged only stack: FreeRTOS
16+
system calls, which execute with elevated privilege, now use a
17+
separate privileged only stack. Previously system calls used the
18+
calling task's stack. The application writer can control the size of
19+
the system call stack using new configSYSTEM_CALL_STACK_SIZE config
20+
macro.
21+
4. Memory bounds checks: FreeRTOS system calls which accept a pointer
22+
and de-reference it, now verify that the calling task has required
23+
permissions to access the memory location referenced by the pointer.
24+
5. System calls restrictions: The following system calls are no longer
25+
available to unprivileged tasks:
26+
- vQueueDelete
27+
- xQueueCreateMutex
28+
- xQueueCreateMutexStatic
29+
- xQueueCreateCountingSemaphore
30+
- xQueueCreateCountingSemaphoreStatic
31+
- xQueueGenericCreate
32+
- xQueueGenericCreateStatic
33+
- xQueueCreateSet
34+
- xQueueRemoveFromSet
35+
- xQueueGenericReset
36+
- xTaskCreate
37+
- xTaskCreateStatic
38+
- vTaskDelete
39+
- vTaskPrioritySet
40+
- vTaskSuspendAll
41+
- xTaskResumeAll
42+
- xTaskGetHandle
43+
- xTaskCallApplicationTaskHook
44+
- vTaskList
45+
- vTaskGetRunTimeStats
46+
- xTaskCatchUpTicks
47+
- xEventGroupCreate
48+
- xEventGroupCreateStatic
49+
- vEventGroupDelete
50+
- xStreamBufferGenericCreate
51+
- xStreamBufferGenericCreateStatic
52+
- vStreamBufferDelete
53+
- xStreamBufferReset
54+
Also, an unprivileged task can no longer use vTaskSuspend to suspend
55+
any task other than itself.
56+
57+
We thank the following people for their inputs in these enhancements:
58+
- David Reiss of Meta Platforms, Inc.
59+
- Lan Luo, Xinhui Shao, Yumeng Wei, Zixia Liu, Huaiyu Yan and Zhen Ling
60+
of School of Computer Science and Engineering, Southeast University,
61+
China.
62+
- Xinwen Fu of Department of Computer Science, University of
63+
Massachusetts Lowell, USA.
64+
- Yueqi Chen, Zicheng Wang, Minghao Lin of University of Colorado
65+
Boulder, USA.
66+
+ Add Cortex-M35P port. Contributed by @urutva.
67+
+ Add embedded extension (RV32E) support to the IAR RISC-V port.
68+
+ Add ulTaskGetRunTimeCounter and ulTaskGetRunTimePercent APIs. Contributed by
69+
@chrisnc.
70+
+ Add APIs to get the application supplied buffers from statically
71+
created kernel objects. The following new APIs are added:
72+
- xTaskGetStaticBuffers
73+
- xQueueGetStaticBuffers
74+
- xQueueGenericGetStaticBuffers
75+
- xSemaphoreGetStaticBuffer
76+
- xEventGroupGetStaticBuffer
77+
- xStreamBufferGetStaticBuffers
78+
- xMessageBufferGetStaticBuffers
79+
These APIs enable the application writer to obtain static buffers from
80+
the kernel object and free/reuse them at the time of deletion. Earlier
81+
the application writer had to maintain the association of static buffers
82+
and the kernel object in the application. Contributed by @Dazza0.
83+
+ Add Thread Local Storage (TLS) support using picolibc function. Contributed
84+
by @keith-packard.
85+
+ Add configTICK_TYPE_WIDTH_IN_BITS to configure TickType_t data type. As a result,
86+
the number of bits in an event group also increases with big data type. Contributed
87+
by @Hadatko.
88+
+ Update eTaskGetState and uxTaskGetSystemState to return eReady for pending ready
89+
tasks. Contributed by @Dazza0.
90+
+ Update heap_4 and heap_5 to add padding only if the resulting block is not
91+
already aligned.
92+
+ Fix the scheduler logic in a couple of places to not preempt a task when an
93+
equal priority task becomes ready.
94+
+ Add macros used in FreeRTOS-Plus libraries. Contributed by @Holden.
95+
+ Fix clang compiler warnings. Contributed by @phelter.
96+
+ Add assertions to ARMv8-M ports to detect when FreeRTOS APIs are called from
97+
interrupts with priority higher than the configMAX_SYSCALL_INTERRUPT_PRIORITY.
98+
Contributed by @urutva.
99+
+ Add xPortIsInsideInterrupt API to ARM_CM0 ports.
100+
+ Fix build warning in MSP430X port when large data model is used.
101+
+ Add the ability to use Cortex-R5 port on the parts without FPU.
102+
+ Fix build warning in heap implementations on PIC24/dsPIC.
103+
+ Update interrupt priority asserts for Cortex-M ports so that these do not fire
104+
on QEMU which does not implement PRIO bits.
105+
+ Update ARMv7-M ports to ensure that kernel interrupts run at the lowest priority.
106+
configKERNEL_INTERRUPT_PRIORITY is now obsolete for ARMv7-M ports and brings
107+
these ports inline with the newer ARMv8-M ports. Contributed by @chrisnc.
108+
+ Fix build issue in POSIX GCC port on Windows Subsystem for Linux (WSL). Contributed
109+
by @jacky309.
110+
+ Add portMEMORY_BARRIER to Microblaze port. Contributed by @bbain.
111+
+ Add portPOINTER_SIZE_TYPE definition for ATmega port. Contributed by @jputcu.
112+
+ Multiple improvements in the CMake support. Contributed by @phelte and @cookpate.
113+
3114
Changes between FreeRTOS V10.5.0 and FreeRTOS V10.5.1 released November 16 2022
4115
+ Updated the kernel version in manifest and SBOM
5116

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ git clone [email protected]:FreeRTOS/FreeRTOS-Kernel.git
7070
## Repository structure
7171
- The root of this repository contains the three files that are common to
7272
every port - list.c, queue.c and tasks.c. The kernel is contained within these
73-
three files.
73+
three files. croutine.c implements the optional co-routine functionality - which
74+
is normally only used on very memory limited systems.
7475

7576
- The ```./portable``` directory contains the files that are specific to a particular microcontroller and/or compiler.
7677
See the readme file in the ```./portable``` directory for more information.

0 commit comments

Comments
 (0)