You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeRTOS-Kernel/portable/ThirdParty
Chris Morgan 3baa3dd98b POSIX port - Switch from allowing the user to specify the stack memory itself, to allowing them to specify the stack size
Change from pthread_attr_setstack() to pthread_attr_setstacksize(), and automatically adjust the stack size
to be at least PTHREAD_STACK_MIN if it wasn't already, removing the size warning.

This permits the user to increase the pthread stack size beyond the PTHREAD_STACK_MIN default of 16384 if
desired, without producing a warning in the typical case where stacks are minimized for RAM limited targets.

Continue to store thread paramters on the provided stack, for consistency with the MCU targets.

Previously pthread_attr_setstack() was used to enable user defined stacks.

Note that:

1. The stack size can still be specified by the user.

2. pxPortInitialiseStack(), and pthread_addr_setstack() was failing on stacks of typical size, as
   these are smaller than PTHREAD_STACK_MIN (16384) bytes, and printing out a series of warnings.
   Improve usability by having the posix port automatically increase the stack size to be
   at least PTHREAD_STACK_MIN as posix platforms have enough memory for this not to be a concern.

3. Reuse of stack memory will also result in valgrind 'invalid write' errors to what is demonstrably
   valid memory. Root cause is that Valgrind is tracking a stack pointer as the stack is used.
   Reuse of a stack buffer results in the stack being used at its start, in an area that Valgrind thinks
   is far away from the start of the stack. There are ways to notify Valgrind of these changes
   however this would require linking against and calling Valgrind functions from the FreeRTOS application using
   the posix port, https://valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.clientreq.

   Also, apparently it isn't permitted by posix to reuse stack memory once its been used in a pthread via pthread_attr_setstack(),
   see https://stackoverflow.com/a/5422134
1 year ago
..
CDK/T-HEAD_CK802 Add trace hook macro for most ports (#794) 1 year ago
Community-Supported-Ports@f051e9bff8 Update partner and community supported port submodule pointer (#919) 1 year ago
GCC POSIX port - Switch from allowing the user to specify the stack memory itself, to allowing them to specify the stack size 1 year ago
Partner-Supported-Ports@da0185fbf1 Update partner and community supported port submodule pointer (#919) 1 year ago
XCC/Xtensa Revert #768 on the XCC/Xtensa portable files (#948) 1 year ago
xClang/XCOREAI Fix portSET_INTERRUPT_MASK_FROM_ISR definition for atomic operation (#940) 1 year ago
KnownIssues.md Add a Known Issues file in the Third Party folder (#434) 3 years ago
README.md Update portable/ThirdParty/README.md (#474) 3 years ago

README.md

FreeRTOS Third Party Ports

FreeRTOS third party ports can be supported by the FreeRTOS team, a FreeRTOS partner or FreeRTOS community members. Depending on who supports it, the support provided will differ as follows:

FreeRTOS Team Supported Third Party FreeRTOS Ports

Location: https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/main/portable/ThirdParty

These third party FreeRTOS ports are supported by the FreeRTOS team. For a FreeRTOS team supported third party FreeRTOS port:

  • The code has been reviewed by the FreeRTOS team.
  • FreeRTOS team has access to the hardware and the test results have been verified by the FreeRTOS team.
  • Customer queries as well as bugs are addressed by the FreeRTOS team.
  • The code can be included in Long Term Support (LTS) releases.

A new FreeRTOS port cannot be directly contributed to this location. Instead, the FreeRTOS team will decide to take ownership of a partner supported or a community supported FreeRTOS port based on the community interest.

Partner Supported FreeRTOS Ports

Location: https://github.com/FreeRTOS/FreeRTOS-Kernel-Partner-Supported-Ports/tree/main

These FreeRTOS ports are supported by a FreeRTOS partner. For a partner supported FreeRTOS port:

  • The code has not been reviewed by the FreeRTOS team.
  • FreeRTOS team has not verified the tests results but tests exist and are reported to be successful by the partner.
  • Customer queries as well as bugs are addressed by the partner.

A new FreeRTOS port can be directly contributed by a partner. The process to contribute a FreeRTOS port is documented here.

Community Supported FreeRTOS Ports

Location: https://github.com/FreeRTOS/FreeRTOS-Kernel-Community-Supported-Ports/tree/main

These FreeRTOS ports are supported by the FreeRTOS community members. For a community supported FreeRTOS port:

  • The code has not been reviewed by the FreeRTOS team.
  • Tests may or may not exist for the FreeRTOS port.
  • Customer queries as well as bugs are addressed by the community.

A new FreeRTOS port can be directly contributed by anyone. The process to contribute a FreeRTOS port is documented here.