POSIX Support Comparison in Various RTOSes
References
POSIX Specification
https://pubs.opengroup.org/onlinepubs/9699919799/
FreeRTOS Plus POSIX
https://freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_POSIX/index.html
ThreadX — POSIX Compatibility Layer
All the APIs available via ThreadX PoSIX Compatibility Layer are defined here:
https://github.com/azure-rtos/threadx/blob/master/utility/rtos_compatibility_layers/posix/tx_posix.h
RIOT
https://github.com/RIOT-OS/RIOT
POSIX Implementation is here:
https://github.com/RIOT-OS/RIOT/tree/master/sys/posix
RTEMS
https://docs.rtems.org/releases/rtems-5.1/posix-compliance/index.html
POSIX Includes: https://github.com/RTEMS/rtems/tree/master/cpukit/include/rtems/posix
NuttX
Information about POSIX can be found here:
https://nuttx.apache.org/docs/latest/reference/user/index.html
Include files, named following standard POSIX header names can be found here:
https://github.com/apache/nuttx/tree/master/include
Note that NuttX has pthread, kthread
Zephyr
Documentation:
https://docs.zephyrproject.org/latest/services/portability/posix.html
Zephyr POSIX layer include files are available in following directory:
https://github.com/zephyrproject-rtos/zephyr/tree/main/include/zephyr/posix
RIOT
https://github.com/RIOT-OS/RIOT/tree/master/sys/posix
Profiles
There’s some public information available on POSIX profiles, however the details ON PSE51 — PSE54 are in non-public document, which I didn’t have access to while writing this summary.
PSE51 through PSE54 are Open Group defined profiles of the 2003 edition of the POSIX standard. These profiles are:
Profile 54 — Multipurpose
1003.1–2003 Base Multi-process, Threads and File System
Profile 53 — Dedicated
Multi-process, Threads and File System
Profile 52 — Controller
Single Process, Threads, and File System
Profile 51 — Minimal
Single Process, Threads, with No File System
PSE51 & PSE52 Support Matrix
pthread.h
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html