]> begriffs open source - freertos/log
freertos
2 years ago[AUTO][RELEASE]: Update SBOM V10.6.2
kar-rahul-aws [Wed, 29 Nov 2023 14:13:55 +0000 (14:13 +0000)]
[AUTO][RELEASE]: Update SBOM

2 years ago[AUTO][RELEASE]: Update version number in manifest.yml
kar-rahul-aws [Wed, 29 Nov 2023 14:13:52 +0000 (14:13 +0000)]
[AUTO][RELEASE]: Update version number in manifest.yml

2 years ago[AUTO][RELEASE]: Bump file header version to "10.6.2"
kar-rahul-aws [Wed, 29 Nov 2023 14:13:51 +0000 (14:13 +0000)]
[AUTO][RELEASE]: Bump file header version to "10.6.2"

2 years ago[AUTO][RELEASE]: Bump task.h version macros to "10.6.2"
kar-rahul-aws [Wed, 29 Nov 2023 14:13:50 +0000 (14:13 +0000)]
[AUTO][RELEASE]: Bump task.h version macros to "10.6.2"

2 years agoUpdate History.txt for V10.6.2 (#912)
Rahul Kar [Wed, 29 Nov 2023 14:12:18 +0000 (19:42 +0530)]
Update History.txt for V10.6.2 (#912)

* Update History.txt for V10.6.2

2 years agoFix prototype of MPU_vTimerSetReloadMode (#911)
Gaurav-Aggarwal-AWS [Wed, 29 Nov 2023 13:45:07 +0000 (19:15 +0530)]
Fix prototype of MPU_vTimerSetReloadMode (#911)

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years agoAdd Access Control List to MPU ports (#897)
Gaurav-Aggarwal-AWS [Thu, 23 Nov 2023 05:15:58 +0000 (10:45 +0530)]
Add Access Control List to MPU ports (#897)

This PR adds Access Control to kernel objects on a per task basis to MPU
ports. The following needs to be defined in the `FreeRTOSConfig.h` to
enable this feature:

```c
```

This PR adds the following new APIs:

```c
void vGrantAccessToTask( TaskHandle_t xTask,
                         TaskHandle_t xTaskToGrantAccess );
void vRevokeAccessToTask( TaskHandle_t xTask,
                          TaskHandle_t xTaskToRevokeAccess );

void vGrantAccessToSemaphore( TaskHandle_t xTask,
                              SemaphoreHandle_t xSemaphoreToGrantAccess );
void vRevokeAccessToSemaphore( TaskHandle_t xTask,
                               SemaphoreHandle_t xSemaphoreToRevokeAccess );

void vGrantAccessToQueue( TaskHandle_t xTask,
                          QueueHandle_t xQueueToGrantAccess );
void vRevokeAccessToQueue( TaskHandle_t xTask,
                           QueueHandle_t xQueueToRevokeAccess );

void vGrantAccessToQueueSet( TaskHandle_t xTask,
                             QueueSetHandle_t xQueueSetToGrantAccess );
void vRevokeAccessToQueueSet( TaskHandle_t xTask,
                              QueueSetHandle_t xQueueSetToRevokeAccess );

void vGrantAccessToEventGroup( TaskHandle_t xTask,
                               EventGroupHandle_t xEventGroupToGrantAccess );
void vRevokeAccessToEventGroup( TaskHandle_t xTask,
                                EventGroupHandle_t xEventGroupToRevokeAccess );

void vGrantAccessToStreamBuffer( TaskHandle_t xTask,
                                 StreamBufferHandle_t xStreamBufferToGrantAccess );
void vRevokeAccessToStreamBuffer( TaskHandle_t xTask,
                                  StreamBufferHandle_t xStreamBufferToRevokeAccess );

void vGrantAccessToMessageBuffer( TaskHandle_t xTask,
                                  MessageBufferHandle_t xMessageBufferToGrantAccess );
void vRevokeAccessToMessageBuffer( TaskHandle_t xTask,
                                   MessageBufferHandle_t xMessageBufferToRevokeAccess );

void vGrantAccessToTimer( TaskHandle_t xTask,
                          TimerHandle_t xTimerToGrantAccess );
void vRevokeAccessToTimer( TaskHandle_t xTask,
                           TimerHandle_t xTimerToRevokeAccess );
```

An unprivileged task by default has access to itself only and no other
kernel object. The application writer needs to explicitly grant an
unprivileged task access to all the kernel objects it needs. The best
place to do that is before starting the scheduler when all the kernel
objects are created.

For example, let's say an unprivileged tasks needs access to a queue and
an event group, the application writer needs to do the following:

```c
vGrantAccessToQueue( xUnprivilegedTaskHandle, xQueue );
vGrantAccessToEventGroup( xUnprivilegedTaskHandle, xEventGroup );
```

The application writer MUST revoke all the accesses before deleting a
task. Failing to do so will result in undefined behavior. In the above
example, the application writer needs to make the following 2 calls
before deleting the task:

```c
vRevokeAccessToQueue( xUnprivilegedTaskHandle, xQueue );
vRevokeAccessToEventGroup( xUnprivilegedTaskHandle, xEventGroup );

```

2 years agoUpdate system call entry mechanism (#896)
Gaurav-Aggarwal-AWS [Tue, 21 Nov 2023 13:12:23 +0000 (18:42 +0530)]
Update system call entry mechanism (#896)

Earlier the System Call entry from an unprivileged task looked like:

1. SVC for entering system call.
2. System call implementation.
3. SVC for exiting system call.

Now, the system call entry needs to make only one system call
and everything else is handled internally.

This PR also makes the following small changes:

1. Add one struct param for system calls with 5 parameters. This
   removes the need for special handling for system calls with 5
   parameters.
2. Remove raise privilege SVC when MPU wrapper v2 is used.
3. Add additional run time parameter checks to MPU wrappers
   for xTaskGenericNotify and xQueueTakeMutexRecursive APIs.

These changes are tested on the following platforms:
1. STM32H743ZI (Cortex-M7)
2. STM32L152RE (Cortex-M3)
3. Nuvoton M2351 (Cortex-M23)
4. NXP LPC55S69 (Cortex-M33)

2 years agoCovert object type check to runtime check (#847)
Gaurav-Aggarwal-AWS [Fri, 20 Oct 2023 16:38:19 +0000 (22:08 +0530)]
Covert object type check to runtime check (#847)

It was checked using assert earlier.

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years agoBackport PR 839 to FreeRTOS-Kernel V10.6.1 (#840)
Rahul Kar [Thu, 19 Oct 2023 05:51:27 +0000 (11:21 +0530)]
Backport PR 839 to FreeRTOS-Kernel V10.6.1 (#840)

* Fix size alignment in the integer overflow issue

* Remove CORTEX_M3_MPS2_QEMU demo in the V10.6.x branch to sync with the main branch.

2 years agoBackport PR 836 to FreeRTOS-Kernel V10.6.1 (#837)
Gaurav-Aggarwal-AWS [Tue, 17 Oct 2023 18:19:09 +0000 (23:49 +0530)]
Backport PR 836 to FreeRTOS-Kernel V10.6.1 (#837)

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years ago[AUTO][RELEASE]: Update SBOM V10.6.1
kar-rahul-aws [Thu, 17 Aug 2023 17:14:08 +0000 (17:14 +0000)]
[AUTO][RELEASE]: Update SBOM

2 years ago[AUTO][RELEASE]: Update version number in manifest.yml
kar-rahul-aws [Thu, 17 Aug 2023 17:14:06 +0000 (17:14 +0000)]
[AUTO][RELEASE]: Update version number in manifest.yml

2 years ago[AUTO][RELEASE]: Bump file header version to "10.6.1"
kar-rahul-aws [Thu, 17 Aug 2023 17:14:06 +0000 (17:14 +0000)]
[AUTO][RELEASE]: Bump file header version to "10.6.1"

2 years ago[AUTO][RELEASE]: Bump task.h version macros to "10.6.1"
kar-rahul-aws [Thu, 17 Aug 2023 17:14:04 +0000 (17:14 +0000)]
[AUTO][RELEASE]: Bump task.h version macros to "10.6.1"

2 years agoUpdate History.txt for V10.6.1 (#759)
kar-rahul-aws [Thu, 17 Aug 2023 17:12:41 +0000 (22:42 +0530)]
Update History.txt for V10.6.1 (#759)

Update History.txt for V10.6.1

Signed-off-by: kar-rahul-aws <karahulx@amazon.com>
2 years agoAdd runtime parameter checks (#758)
kar-rahul-aws [Thu, 17 Aug 2023 13:23:42 +0000 (18:53 +0530)]
Add runtime parameter checks (#758)

* Add runtime parameter checks

This commit adds runtime checks for function parameters
to mpu_wrappers_v2 file. The same checks are performed
in the API implementation using asserts.

Signed-off-by: kar-rahul-aws <karahulx@amazon.com>
2 years agoUpdate version number in manifest.yml (#756)
kar-rahul-aws [Thu, 17 Aug 2023 11:50:53 +0000 (17:20 +0530)]
Update version number in manifest.yml (#756)

Add automation to update version number in manifest.yml. Also,
bring required commits from main.

2 years agoUpdate SBOM V10.6.0
kar-rahul-aws [Thu, 13 Jul 2023 11:45:34 +0000 (11:45 +0000)]
Update SBOM

2 years ago[AUTO][RELEASE]: Bump file header version to "10.6.0"
kar-rahul-aws [Thu, 13 Jul 2023 11:45:32 +0000 (11:45 +0000)]
[AUTO][RELEASE]: Bump file header version to "10.6.0"

2 years ago[AUTO][RELEASE]: Bump task.h version macros to "10.6.0"
kar-rahul-aws [Thu, 13 Jul 2023 11:45:30 +0000 (11:45 +0000)]
[AUTO][RELEASE]: Bump task.h version macros to "10.6.0"

2 years agoUpdate History for Version 10.6.0 (#706)
kar-rahul-aws [Thu, 13 Jul 2023 11:43:16 +0000 (17:13 +0530)]
Update History for Version 10.6.0 (#706)

Signed-off-by: kar-rahul-aws <karahulx@amazon.com>
2 years agoMemory Protection Unit (MPU) Enhancements (#705)
kar-rahul-aws [Thu, 13 Jul 2023 11:21:04 +0000 (16:51 +0530)]
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 agoFix circular dependency in CMake project (#700)
Patrick Cook [Mon, 10 Jul 2023 22:08:59 +0000 (15:08 -0700)]
Fix circular dependency in CMake project (#700)

* Fix circular dependency in cmake project

Fix for https://github.com/FreeRTOS/FreeRTOS-Kernel/issues/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

2 years agoUpdate uxTaskGetSystemState for tasks in pending ready list (#702)
chinglee-iot [Mon, 10 Jul 2023 06:29:38 +0000 (14:29 +0800)]
Update uxTaskGetSystemState for tasks in pending ready list (#702)

* Update uxTaskGetSystemState to sync with eTaskGetState
* Update in vTaskGetInfo for tasks in pending ready list should be in
  ready state.

2 years agoRemove empty expression statement compiler warning (#692)
chinglee-iot [Thu, 6 Jul 2023 02:44:24 +0000 (10:44 +0800)]
Remove empty expression statement compiler warning (#692)

* Add do while( 0 ) loop for empty expression statement compiler warning

2 years agoFix #697: Missing portPOINTER_SIZE_TYPE definition for ATmega port (#698)
Joris Putcuyps [Thu, 29 Jun 2023 18:18:51 +0000 (20:18 +0200)]
Fix #697: Missing portPOINTER_SIZE_TYPE definition for ATmega port (#698)

2 years agoFix typos in comments for the AT91SAM7S port (#695)
Evgeny Ermakov [Mon, 26 Jun 2023 18:13:10 +0000 (18:13 +0000)]
Fix typos in comments for the AT91SAM7S port (#695)

Co-authored-by: RichardBarry <3073890+RichardBarry@users.noreply.github.com>
2 years agoUpdate static stream buffer size check (#693)
chinglee-iot [Mon, 26 Jun 2023 07:44:33 +0000 (15:44 +0800)]
Update static stream buffer size check (#693)

* Use volatile size instead of sizeof directly to prevent always
  true/false warning

2 years agoAdd constant type for portMAX_DELAY in port (#691)
chinglee-iot [Mon, 26 Jun 2023 02:49:59 +0000 (10:49 +0800)]
Add constant type for portMAX_DELAY in port (#691)

Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
2 years agoFix typo in check comment of configMAX_SYSCALL_INTERRUPT_PRIORITY (#690)
chinglee-iot [Wed, 21 Jun 2023 09:35:18 +0000 (17:35 +0800)]
Fix typo in check comment of configMAX_SYSCALL_INTERRUPT_PRIORITY (#690)

2 years ago Use portTASK_FUNCTION_PROTO to replace portNORETURN (#688)
chinglee-iot [Mon, 12 Jun 2023 10:47:17 +0000 (18:47 +0800)]
 Use portTASK_FUNCTION_PROTO to replace portNORETURN (#688)

* Use portTASK_FUNCTION_PROTO to replace portNORETURN

2 years agoFix clang warning in croutine and stream buffer (#686)
chinglee-iot [Mon, 12 Jun 2023 09:44:23 +0000 (17:44 +0800)]
Fix clang warning in croutine and stream buffer (#686)

* Fix document warning in croutine
* Fix cast-qual warning in stream buffer

2 years agoUse UBaseType_t as interrupt mask (#689)
chinglee-iot [Mon, 12 Jun 2023 09:33:52 +0000 (17:33 +0800)]
Use UBaseType_t as interrupt mask (#689)

* Use UBaseType_t as interrupt mask
* Update GCC posix port to use UBaseType_t as interrupt mask

2 years agoRemove __NVIC_PRIO_BITS and configPRIO_BITS check in port (#683)
chinglee-iot [Thu, 8 Jun 2023 02:52:08 +0000 (10:52 +0800)]
Remove __NVIC_PRIO_BITS and configPRIO_BITS check in port (#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 <33462878+aggarg@users.noreply.github.com>
2 years agoAdd back croutines by reverting PR#590 (#685)
Aniruddha Kanhere [Fri, 2 Jun 2023 18:03:40 +0000 (11:03 -0700)]
Add back croutines by reverting PR#590 (#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

2 years agoGenerates SBOM after source files are updated with release tag (#680)
Tony Josi [Wed, 31 May 2023 10:04:18 +0000 (10:04 +0000)]
Generates SBOM after source files are updated with release tag (#680)

* update source file with release version info before SBOM generation

* delete tag branch during cleanup

2 years agoFix eTaskGetState for pending ready tasks (#679)
Gaurav-Aggarwal-AWS [Thu, 25 May 2023 11:03:10 +0000 (16:33 +0530)]
Fix eTaskGetState for pending ready tasks (#679)

This commit fixes eTaskGetState so that eReady is returned for pending ready
tasks.

Co-authored-by: Darian Leung <darian@espressif.com>
2 years agoUse the extended movx instruction instead of mov (#676)
Gaurav-Aggarwal-AWS [Mon, 15 May 2023 17:59:04 +0000 (23:29 +0530)]
Use the extended movx instruction instead of mov (#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 <aggarg@amazon.com>
2 years agoArmv8-M (except Cortex-M23) interrupt priority checking (#673)
Devaraj Ranganna [Thu, 11 May 2023 16:41:00 +0000 (17:41 +0100)]
Armv8-M (except Cortex-M23) interrupt priority checking (#673)

* Armv8-M: Formatting changes

Signed-off-by: Devaraj Ranganna <devaraj.ranganna@arm.com>
* 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 <devaraj.ranganna@arm.com>
* 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 <aggarg@amazon.com>
---------

Signed-off-by: Devaraj Ranganna <devaraj.ranganna@arm.com>
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
2 years agoAlign StackSize and StackAddress for macOS (#674)
Monika Singh [Wed, 10 May 2023 06:41:52 +0000 (12:11 +0530)]
Align StackSize and StackAddress for macOS (#674)

2 years agoFix cast alignment warning (#669)
Gaurav-Aggarwal-AWS [Mon, 8 May 2023 17:31:26 +0000 (23:01 +0530)]
Fix cast alignment warning (#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 <aggarg@amazon.com>
2 years agoUpdated tasks.c checks for scheduler suspension (#670)
Sudeep Mohanty [Mon, 8 May 2023 06:57:28 +0000 (08:57 +0200)]
Updated tasks.c checks for scheduler suspension (#670)

This commit updates the checks for the variable uxSchedulerSuspended in
tasks.c module to use a uniform format.

Signed-off-by: Sudeep Mohanty <sudp.mohanty@gmail.com>
2 years agoParanthesize expression-like macro (#668)
tcpluess [Fri, 28 Apr 2023 21:05:56 +0000 (23:05 +0200)]
Paranthesize expression-like macro (#668)

2 years agotree-wide: Unify formatting of __cplusplus ifdefs
Paul Bartell [Thu, 20 Apr 2023 19:46:00 +0000 (12:46 -0700)]
tree-wide: Unify formatting of __cplusplus ifdefs

2 years agoportable/ARM_CM0: Add xPortIsInsideInterrupt
Paul Bartell [Tue, 18 Apr 2023 21:43:29 +0000 (14:43 -0700)]
portable/ARM_CM0: Add xPortIsInsideInterrupt

Add missing xPortIsInsideInterrupt function to Cortex-M0 port.

2 years agoFormat portmacro.h in arm CM0 ports
Paul Bartell [Tue, 18 Apr 2023 19:01:49 +0000 (12:01 -0700)]
Format portmacro.h in arm CM0 ports

2 years agoARMv7M: Adjust implemented priority bit assertions (#665)
Paul Bartell [Thu, 20 Apr 2023 05:24:54 +0000 (22:24 -0700)]
ARMv7M: Adjust implemented priority bit assertions (#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 #1122

2 years agofix conversion warning (#658)
Vo Trung Chi [Tue, 4 Apr 2023 15:10:54 +0000 (22:10 +0700)]
fix conversion warning (#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 <chi.votrung@vn.bosch.com>
2 years agoadd a missing comma (#651)
Nicolas [Wed, 29 Mar 2023 13:23:45 +0000 (15:23 +0200)]
add a missing comma (#651)

2 years agoOnly add alignment padding when needed (#650)
Gaurav-Aggarwal-AWS [Tue, 28 Mar 2023 11:31:37 +0000 (17:01 +0530)]
Only add alignment padding when needed (#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 <aggarg@amazon.com>
2 years agoRemove C90 requirement from CMakeLists (#649)
Gaurav-Aggarwal-AWS [Tue, 28 Mar 2023 08:58:47 +0000 (14:28 +0530)]
Remove C90 requirement from CMakeLists (#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 <aggarg@amazon.com>
2 years agoCortex-M Assert when NVIC implements 8 PRIO bits (#639)
kar-rahul-aws [Thu, 23 Mar 2023 09:36:33 +0000 (15:06 +0530)]
Cortex-M Assert when NVIC implements 8 PRIO bits (#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 <33462878+aggarg@users.noreply.github.com>
Co-authored-by: Ubuntu <ubuntu@ip-172-31-17-174.ec2.internal>
2 years agoAdd functions to get the buffers of statically created objects (#641)
Darian [Wed, 22 Mar 2023 22:27:57 +0000 (06:27 +0800)]
Add functions to get the buffers of statically created objects (#641)

Added various ...GetStaticBuffer() functions to get the buffers of statically
created objects.
---------
Co-authored-by: Paul Bartell <pbartell@amazon.com>
Co-authored-by: Nikhil Kamath <110539926+amazonKamath@users.noreply.github.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years agoRun kernel demos and unit tests for PR changes (#645)
Gaurav-Aggarwal-AWS [Fri, 17 Mar 2023 02:52:34 +0000 (08:22 +0530)]
Run kernel demos and unit tests for PR changes (#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 <aggarg@amazon.com>
* Do not specify PR SHA explicitly as that is default

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Remove explicit PR SHA from kernel checks

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
---------

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years agoAdd missing FreeRTOS+ defines
Holden [Sat, 11 Mar 2023 17:34:15 +0000 (12:34 -0500)]
Add missing FreeRTOS+ defines

2 years agoFix freertos_kernel cmake property, Posix Port (#640)
Kody Stribrny [Tue, 7 Mar 2023 04:04:15 +0000 (20:04 -0800)]
Fix freertos_kernel cmake property, Posix Port (#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

2 years agoEnable building the GCC Cortex-R5 port without an FPU (#586)
Paul Bartell [Mon, 6 Mar 2023 16:19:28 +0000 (08:19 -0800)]
Enable building the GCC Cortex-R5 port without an FPU (#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 <aggarg@amazon.com>
---------

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Christos Zosimidis <christos.zosimidis@gmail.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years agoFix TLS and stack alignment when using picolibc (#637)
Keith Packard [Mon, 6 Mar 2023 06:29:39 +0000 (22:29 -0800)]
Fix TLS and stack alignment when using picolibc (#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 <keithpac@amazon.com>
Co-authored-by: Keith Packard <keithpac@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
2 years agoadded portPOINTER_SIZE_TYPE and SIZE_MAX definition to PIC24/dsPIC port (#636)
Joseph Julicher [Sat, 4 Mar 2023 02:01:16 +0000 (19:01 -0700)]
added portPOINTER_SIZE_TYPE and SIZE_MAX definition to PIC24/dsPIC port (#636)

* added portPOINTER_SIZE_TYPE definition to PIC24/dsPIC port

* Added SIZE_MAX definition to PIC24/dsPIC33

2 years agoIntroduced code coverage status badge (#635)
Nikhil Kamath [Thu, 2 Mar 2023 18:06:57 +0000 (23:36 +0530)]
Introduced code coverage status badge (#635)

* Introduced code coverage status badge

* Trying to fix the URL checker issue

* Fix URL check

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
---------

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
2 years agoInterrupt priority assert improvements for CM3/4/7 (#602)
Chris Copeland [Thu, 2 Mar 2023 17:49:56 +0000 (09:49 -0800)]
Interrupt priority assert improvements for CM3/4/7 (#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 <aggarg@amazon.com>
---------

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years agoAdd Thread Local Storage (TLS) support using Picolibc functions (#343)
Keith Packard [Thu, 2 Mar 2023 16:26:04 +0000 (08:26 -0800)]
Add Thread Local Storage (TLS) support using Picolibc functions (#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 <keithpac@amazon.com>
* 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 <keithpac@amazon.com>
* 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 <keithpac@amazon.com>
* 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 <keithpac@amazon.com>
* 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 <keithpac@amazon.com>
---------

Signed-off-by: Keith Packard <keithpac@amazon.com>
Co-authored-by: Keith Packard <keithpac@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
2 years agoRemove C99 requirement from CMake file (#633)
Gaurav-Aggarwal-AWS [Thu, 2 Mar 2023 09:17:29 +0000 (14:47 +0530)]
Remove C99 requirement from CMake file (#633)

* Remove C99 requirement from CMake file

The kernel source is C89 compliant and does not need C99.

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Explicitly set C89 requirement for kernel

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
---------

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years agoIntroduced Github Status Badge for Unit Tests (#634)
Nikhil Kamath [Tue, 28 Feb 2023 07:52:25 +0000 (13:22 +0530)]
Introduced Github Status Badge for Unit Tests (#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 <118818625+kar-rahul-aws@users.noreply.github.com>
2 years agoCortex-M35P: Add Cortex-M35P port (#631)
Devaraj Ranganna [Tue, 28 Feb 2023 07:28:59 +0000 (07:28 +0000)]
Cortex-M35P: Add Cortex-M35P port (#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 <devaraj.ranganna@arm.com>
* Add portNORETURN to the newly added portmacro.h

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
---------

Signed-off-by: Devaraj Ranganna <devaraj.ranganna@arm.com>
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: kar-rahul-aws <118818625+kar-rahul-aws@users.noreply.github.com>
2 years agoPOSIX port fixes (#626)
jacky309 [Mon, 27 Feb 2023 18:21:11 +0000 (19:21 +0100)]
POSIX port fixes (#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 <jacques.guillou.job@gmail.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
2 years agoFeature/fixing clang gnu compiler warnings (#620)
phelter [Thu, 23 Feb 2023 18:05:04 +0000 (10:05 -0800)]
Feature/fixing clang gnu compiler warnings (#620)

* Adding in ability to support a library for freertos_config and a custom freertos_kernel_port (#558)

* Using single name definition for libraries everywhere. (#558)

* Supporting backwards compatibility with FREERTOS_CONFIG_FILE_DIRECTORY (#571)

* Removing compiler warnings for GNU and Clang. (#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 <33462878+aggarg@users.noreply.github.com>
2 years agoFix build failure introduced in PR #597 (#629)
Gaurav-Aggarwal-AWS [Thu, 23 Feb 2023 04:07:42 +0000 (09:37 +0530)]
Fix build failure introduced in PR #597 (#629)

The PR #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, #320]  ; (11e0 <xTaskIncrementTick+0x150>)
10a0:       f8d3 4134       ldr.w   r4, [r3, #308]  ; 0x134
10a4:       3401            adds    r4, #1
10a6:       f8c3 4134       str.w   r4, [r3, #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, #332]  ; (1230 <xTaskIncrementTick+0x15c>)
10e4:       f8b3 4134       ldrh.w  r4, [r3, #308]  ; 0x134
10e8:       b2a4            uxth    r4, r4
10ea:       3401            adds    r4, #1
10ec:       b2a4            uxth    r4, r4
10ee:       f8a3 4134       strh.w  r4, [r3, #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, #332]  ; (1230 <xTaskIncrementTick+0x15c>)
10e4:       f8b3 4134       ldrh.w  r4, [r3, #308]  ; 0x134
10e8:       b2a4            uxth    r4, r4
10ea:       3401            adds    r4, #1
10ec:       b2a4            uxth    r4, r4
10ee:       f8a3 4134       strh.w  r4, [r3, #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, #320]  ; (11e0 <xTaskIncrementTick+0x150>)
10a0:       f8d3 4134       ldr.w   r4, [r3, #308]  ; 0x134
10a4:       3401            adds    r4, #1
10a6:       f8c3 4134       str.w   r4, [r3, #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 - https://github.com/FreeRTOS/FreeRTOS-Kernel/issues/628

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years ago Update PR template to include checkbox for Unit Test related changes (#627)
Aniruddha Kanhere [Mon, 20 Feb 2023 21:16:57 +0000 (13:16 -0800)]
 Update PR template to include checkbox for Unit Test related changes (#627)

2 years agoDo not call exit() on MSVC Port when calling vPortEndScheduler (#624) 589/head
Ju1He1 [Wed, 15 Feb 2023 06:10:32 +0000 (07:10 +0100)]
Do not call exit() on MSVC Port when calling vPortEndScheduler (#624)

* make port exitable

* correctly set xPortRunning to False

* add suggestions from Review

Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
* add suggestions from Review

Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
---------

Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
2 years agoIntroduce portMEMORY_BARRIER for Microblaze port. (#621)
bbain [Mon, 13 Feb 2023 04:58:20 +0000 (15:58 +1100)]
Introduce portMEMORY_BARRIER for Microblaze port. (#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.

2 years agoAdded support of 64bit events. (#597)
Dusan Cervenka [Fri, 3 Feb 2023 14:34:02 +0000 (15:34 +0100)]
Added support of 64bit events. (#597)

* Added support of 64bit even

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
* Added missing brackets

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
* Made proper name for tick macro.

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
* Improved macro evaluation

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
* Fixed missed port files  + documentation

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
* Changes made on PR

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
* Fix macro definition.

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
* Formatted code with uncrustify

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
---------

Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
2 years agoFix some CMake documentation typos (#616)
David J. Fiddes [Mon, 23 Jan 2023 17:16:24 +0000 (17:16 +0000)]
Fix some CMake documentation typos (#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.

2 years agoAdd ulTaskGetRunTimeCounter and ulTaskGetRunTimePercent (#611)
Chris Copeland [Thu, 19 Jan 2023 22:46:42 +0000 (14:46 -0800)]
Add ulTaskGetRunTimeCounter and ulTaskGetRunTimePercent (#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.

2 years agoUpdate FreeRTOS/FreeRTOS build checks (#613)
Gaurav-Aggarwal-AWS [Mon, 16 Jan 2023 09:36:18 +0000 (15:06 +0530)]
Update FreeRTOS/FreeRTOS build checks (#613)

This is needed to be compatible with the refactoring done in this
PR - https://github.com/FreeRTOS/FreeRTOS/pull/889

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
2 years agoUpdate equal priority task preemption (#603)
chinglee-iot [Fri, 6 Jan 2023 02:42:13 +0000 (10:42 +0800)]
Update equal priority task preemption (#603)

* vTaskResume and vTaskPrioritySet don't preempt equal priority task

* Update vTaskResumeAll not to preempt task with equal priority

* Fix in xTaskResumeFromISR

3 years agomove the prototype for vApplicationIdleHook to task.h. (#600)
tcpluess [Mon, 19 Dec 2022 09:48:07 +0000 (10:48 +0100)]
move the prototype for vApplicationIdleHook to task.h. (#600)

Co-authored-by: pluess <pluess@faulhorn.mw.iap.unibe.ch>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
3 years agoFix array-bounds compiler warning on gcc11+ in list.h (#580)
Archit Gupta [Thu, 15 Dec 2022 21:46:32 +0000 (21:46 +0000)]
Fix array-bounds compiler warning on gcc11+ in list.h (#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.

3 years agoIntroduce .git-blame-ignore-revs
Paul Bartell [Tue, 9 Aug 2022 18:50:26 +0000 (11:50 -0700)]
Introduce .git-blame-ignore-revs

The .git-blame-ignore-revs allows easy filtering out large commits
from calls to git blame.

This can be configured frome the git command line via the following:
git config blame.ignoreRevsFile .git-blame-ignore-revs

3 years agoNormalize line endings and whitespace in source files
Paul Bartell [Tue, 29 Nov 2022 18:36:04 +0000 (10:36 -0800)]
Normalize line endings and whitespace in source files

3 years agoci: Enforce unix-style LF line endings
Paul Bartell [Tue, 9 Aug 2022 20:37:39 +0000 (13:37 -0700)]
ci: Enforce unix-style LF line endings

3 years agoEnable automatic EOL conversion by git
Paul Bartell [Tue, 9 Aug 2022 18:46:07 +0000 (11:46 -0700)]
Enable automatic EOL conversion by git

Fix EOL of .gitattributes

3 years agoAdd IAR RISC-V 32 Embedded Extension Support (#588)
Kody Stribrny [Tue, 29 Nov 2022 22:55:18 +0000 (14:55 -0800)]
Add IAR RISC-V 32 Embedded Extension Support (#588)

Adds RV32E support to the IAR port. This is done by
reducing our register usage to the first 16 registers
only.

Influenced by changes in https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/543

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
3 years agoRemove croutine.c from RP2040 cmake include file
Paul Bartell [Fri, 25 Nov 2022 20:01:38 +0000 (12:01 -0800)]
Remove croutine.c from RP2040 cmake include file

3 years agoRemove xCoRoutineHandle definition from FreeRTOS.h
Paul Bartell [Fri, 25 Nov 2022 20:01:22 +0000 (12:01 -0800)]
Remove xCoRoutineHandle definition from FreeRTOS.h

3 years agoRemove coroutine references from MISRA exception comments
Paul Bartell [Fri, 25 Nov 2022 20:01:00 +0000 (12:01 -0800)]
Remove coroutine references from MISRA exception comments

3 years agoparenthesize expression-like macro (#592)
tcpluess [Mon, 28 Nov 2022 06:48:29 +0000 (07:48 +0100)]
parenthesize expression-like macro (#592)

* parenthesize expression-like macro

* fixed wrong indentation

3 years agoREADME.md: Remove coroutine references.
Paul Bartell [Tue, 22 Nov 2022 19:04:02 +0000 (11:04 -0800)]
README.md: Remove coroutine references.

3 years agoCMakeLists.txt: Remove croutine.c from CMakeLists.txt
Paul Bartell [Tue, 22 Nov 2022 19:03:24 +0000 (11:03 -0800)]
CMakeLists.txt: Remove croutine.c from CMakeLists.txt
CMakeLists.txt: Remove croutine.c

3 years agoRemove coroutine terms from lexicon
Paul Bartell [Tue, 22 Nov 2022 19:03:05 +0000 (11:03 -0800)]
Remove coroutine terms from lexicon

3 years agoRemove coroutines from FreeRTOS-Kernel.
Paul Bartell [Wed, 7 Apr 2021 17:48:05 +0000 (10:48 -0700)]
Remove coroutines from FreeRTOS-Kernel.

3 years agoMake unit-test run on 20.04 ubuntu
Aniruddha Kanhere [Fri, 18 Nov 2022 09:32:10 +0000 (15:02 +0530)]
Make unit-test run on 20.04 ubuntu

3 years agoUpdate kernel-checks.yml
Aniruddha Kanhere [Fri, 18 Nov 2022 09:21:11 +0000 (14:51 +0530)]
Update kernel-checks.yml

3 years agoUpdate ci.yml
Aniruddha Kanhere [Fri, 18 Nov 2022 09:18:30 +0000 (14:48 +0530)]
Update ci.yml

3 years agoUpdate actions to use 20.04 ubuntu
Aniruddha Kanhere [Fri, 18 Nov 2022 09:11:59 +0000 (14:41 +0530)]
Update actions to use 20.04 ubuntu

3 years agoOnly adding freertos_config if it exists. Removing auto generation of it from a FREER...
Paul Helter [Fri, 4 Nov 2022 23:23:52 +0000 (16:23 -0700)]
Only adding freertos_config if it exists. Removing auto generation of it from a FREERTOS_CONFIG_FILE_DIRECTORY.

3 years agoAdded in documentation on how to consume from a main project. Added default PORT...
Paul Helter [Sun, 23 Oct 2022 23:46:05 +0000 (16:46 -0700)]
Added in documentation on how to consume from a main project. Added default PORT selection for native POSIX and MINGW platforms.

3 years agoRemoving compiler warnings for GNU and Clang. (#571)
Paul Helter [Wed, 12 Oct 2022 10:00:24 +0000 (03:00 -0700)]
Removing compiler warnings for GNU and Clang. (#571)

3 years agoSupporting backwards compatibility with FREERTOS_CONFIG_FILE_DIRECTORY (#571)
Paul Helter [Tue, 11 Oct 2022 19:27:08 +0000 (12:27 -0700)]
Supporting backwards compatibility with FREERTOS_CONFIG_FILE_DIRECTORY (#571)