.. _posix_conformance: POSIX Conformance ################# As per `IEEE 1003.1-2017`, this section details Zephyr's POSIX conformance. .. _posix_undefined_behaviour: .. note:: As per POSIX 1003.13, single process mode is supported directly by both PSE51 and PSE52 profiles. While Zephyr includes support for many features found in PSE53, PSE53 itself requires supporting multiple processes. Since supporting multiple processes is beyond the scope of Zephyr's current design, some features requiring multi-process capabilities may exhibit undefined behaviour, which we denote with the † (obelus) symbol. .. _posix_libc_provided: .. note:: Features listed in various POSIX Options or Option Groups may be provided in whole or in part by a conformant C library implementation. This includes (but is not limited to) POSIX Extensions to the ISO C Standard (`CX`_). .. _posix_system_interfaces: POSIX System Interfaces ======================= .. The following have values greater than -1 in Zephyr, conformant with the POSIX specification. .. csv-table:: POSIX System Interfaces :header: Symbol, Support, Remarks :widths: 50, 10, 50 _POSIX_CHOWN_RESTRICTED, 0, _POSIX_NO_TRUNC, 0, _POSIX_VDISABLE, 0, .. The following should be valued greater than zero in Zephyr, in order to be strictly conformant with the POSIX specification. .. csv-table:: POSIX System Interfaces :header: Symbol, Support, Remarks :widths: 50, 10, 50 _POSIX_JOB_CONTROL, -1, :ref:`†` _POSIX_REGEXP, -1, :ref:`†` _POSIX_SAVED_IDS, -1, :ref:`†` _POSIX_SHELL, -1, :ref:`†` .. TODO: POSIX_ASYNCHRONOUS_IO, and other interfaces below, are mandatory. That means that a strictly conforming application need not be modified in order to compile against Zephyr. However, we may add implementations that simply fail with ENOSYS as long as the functional modification is clearly documented. The implementation is not required for PSE51 or PSE52 and beyond that POSIX async I/O functions are rarely used in practice. .. csv-table:: POSIX System Interfaces :header: Symbol, Support, Remarks :widths: 50, 10, 50 _POSIX_VERSION, 200809L, _POSIX_ASYNCHRONOUS_IO, -1, :ref:`†` :ref:`_POSIX_BARRIERS`, 200809L, :kconfig:option:`CONFIG_PTHREAD_BARRIER` :ref:`_POSIX_CLOCK_SELECTION`, 200809L, :kconfig:option:`CONFIG_POSIX_CLOCK` _POSIX_MAPPED_FILES, -1, :ref:`†` _POSIX_MEMORY_PROTECTION, -1, :ref:`†` :ref:`_POSIX_READER_WRITER_LOCKS`, 200809L, :kconfig:option:`CONFIG_PTHREAD_IPC` _POSIX_REALTIME_SIGNALS, -1, :ref:`†` :ref:`_POSIX_SEMAPHORES`, 200809L, :kconfig:option:`CONFIG_PTHREAD_IPC` :ref:`_POSIX_SPIN_LOCKS`, 200809L, :kconfig:option:`CONFIG_PTHREAD_SPINLOCK` :ref:`_POSIX_THREAD_SAFE_FUNCTIONS`, -1, :ref:`_POSIX_THREADS`, -1, :kconfig:option:`CONFIG_PTHREAD_IPC` :ref:`_POSIX_TIMEOUTS`, 200809L, :kconfig:option:`CONFIG_PTHREAD_IPC` :ref:`_POSIX_TIMERS`, 200809L, :kconfig:option:`CONFIG_POSIX_CLOCK` _POSIX2_C_BIND, 200809L, .. csv-table:: POSIX System Interfaces (Optional) :header: Symbol, Support, Remarks :widths: 50, 10, 50 _POSIX_ADVISORY_INFO, -1, _POSIX_CPUTIME, 200809L, :kconfig:option:`CONFIG_POSIX_CLOCK` _POSIX_FSYNC, -1, _POSIX_IPV6, 200809L, :kconfig:option:`CONFIG_NET_IPV6` _POSIX_MEMLOCK, -1, _POSIX_MEMLOCK_RANGE, -1, :ref:`_POSIX_MESSAGE_PASSING`, 200809L, :kconfig:option:`CONFIG_POSIX_MQUEUE` _POSIX_MONOTONIC_CLOCK, 200809L, :kconfig:option:`CONFIG_POSIX_CLOCK` _POSIX_PRIORITIZED_IO, -1, :ref:`_POSIX_PRIORITY_SCHEDULING`, -1, :kconfig:option:`CONFIG_POSIX_PRIORITY_SCHEDULING` (will fail with ``ENOSYS``:ref:`†`) _POSIX_RAW_SOCKETS, 200809L, :kconfig:option:`CONFIG_NET_SOCKETS` _POSIX_SHARED_MEMORY_OBJECTS, -1, _POSIX_SPAWN, -1, _POSIX_SPORADIC_SERVER, -1, _POSIX_SYNCHRONIZED_IO, -1, :ref:`_POSIX_THREAD_ATTR_STACKADDR`, 200809L, :kconfig:option:`CONFIG_PTHREAD` _POSIX_THREAD_CPUTIME, -1, :ref:`_POSIX_THREAD_ATTR_STACKSIZE`, 200809L, :kconfig:option:`CONFIG_PTHREAD` _POSIX_THREAD_PRIO_INHERIT, 200809L, :kconfig:option:`CONFIG_PTHREAD_MUTEX` _POSIX_THREAD_PRIO_PROTECT, -1, :ref:`_POSIX_THREAD_PRIORITY_SCHEDULING`, 200809L, :kconfig:option:`CONFIG_PTHREAD` _POSIX_THREAD_PROCESS_SHARED, -1, _POSIX_THREAD_SPORADIC_SERVER, -1, _POSIX_TRACE, -1, _POSIX_TRACE_EVENT_FILTER, -1, _POSIX_TRACE_INHERIT, -1, _POSIX_TRACE_LOG, -1, _POSIX_TYPED_MEMORY_OBJECTS, -1, _XOPEN_CRYPT, -1, _XOPEN_REALTIME, -1, _XOPEN_REALTIME_THREADS, -1, :ref:`_XOPEN_STREAMS`, -1, :ref:`†` _XOPEN_UNIX, -1, POSIX Shell and Utilities ========================= Zephyr does not support a POSIX shell or utilities at this time. .. csv-table:: POSIX Shell and Utilities :header: Symbol, Support, Remarks :widths: 50, 10, 50 _POSIX2_C_DEV, -1, :ref:`†` _POSIX2_CHAR_TERM, -1, :ref:`†` _POSIX2_FORT_DEV, -1, :ref:`†` _POSIX2_FORT_RUN, -1, :ref:`†` _POSIX2_LOCALEDEF, -1, :ref:`†` _POSIX2_PBS, -1, :ref:`†` _POSIX2_PBS_ACCOUNTING, -1, :ref:`†` _POSIX2_PBS_LOCATE, -1, :ref:`†` _POSIX2_PBS_MESSAGE, -1, :ref:`†` _POSIX2_PBS_TRACK, -1, :ref:`†` _POSIX2_SW_DEV, -1, :ref:`†` _POSIX2_UPE, -1, :ref:`†` _POSIX2_UNIX, -1, :ref:`†` _POSIX2_UUCP, -1, :ref:`†` XSI Conformance ############### XSI System Interfaces ===================== .. csv-table:: XSI System Interfaces :header: Symbol, Support, Remarks :widths: 50, 10, 50 _POSIX_FSYNC, -1, :ref:`†` :ref:`_POSIX_THREAD_ATTR_STACKADDR`, 200809L, :kconfig:option:`CONFIG_PTHREAD` :ref:`_POSIX_THREAD_ATTR_STACKSIZE`, 200809L, :kconfig:option:`CONFIG_PTHREAD` _POSIX_THREAD_PROCESS_SHARED, -1, .. _CX: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap01.html