POSIX Support Comparison in Various RTOSes

Zim Kalinowski
2 min readOct 19, 2023

--

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

--

--