===== POSIX ===== Apache NuttX is **not** licensed to use the POSIX trademark. NuttX uses the POSIX standard as a development guideline only. This page summarizes supported POSIX features in NuttX. POSIX Subprofiles ================= POSIX PSE51 - Minimal --------------------- Units of Functionality Requirements: +------------------------------+----------------+---------+ | Symbol | Support | Remarks | +==============================+================+=========+ | POSIX_ADA_LANG_SUPPORT | No | | +------------------------------+----------------+---------+ | `POSIX_C_LANG_JUMP`_ | Yes | | +------------------------------+----------------+---------+ | `POSIX_C_LANG_SUPPORT`_ | 94/105 [#fn1]_ | | +------------------------------+----------------+---------+ | `POSIX_DEVICE_IO`_ | Yes | | +------------------------------+----------------+---------+ | `POSIX_FILE_LOCKING`_ | Yes | | +------------------------------+----------------+---------+ | `POSIX_SINGLE_PROCESS`_ | 7/9 | | +------------------------------+----------------+---------+ | `POSIX_THREADS_BASE`_ | Yes | | +------------------------------+----------------+---------+ | `POSIX_THREADS_EXT`_ [#fn2]_ | 2/4 | | +------------------------------+----------------+---------+ | `XSI_THREADS_EXT`_ | 2/4 | | +------------------------------+----------------+---------+ .. [#fn1] ``fenv.h`` related functions not supported. .. [#fn2] In older revisions this was called ``XSI_THREAD_MUTEX_EXT`` and some of interfaces was moved from ``POSIX_THREADS_EXT`` to ``POSIX_THREADS_EXT``. POSIX.1 Option Requirements: +-------------------------------------------------+-------------+----------------------------------+ |Symbol | Support | Remarks | +=================================================+=============+==================================+ |`_POSIX_CLOCK_SELECTION`_ | Yes | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_FSYNC`_ | Yes | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_MEMLOCK`_ | Yes [#fn3]_ | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_MEMLOCK_RANGE`_ | Yes [#fn3]_ | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_MONOTONIC_CLOCK`_ | Yes | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_NO_TRUNC`_ | No | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_REALTIME_SIGNALS`_ | 201712L | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_SEMAPHORES`_ | 201712L | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_SHARED_MEMORY_OBJECTS`_ | 201712L | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_SYNCHRONIZED_IO`_ | Yes | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_THREAD_ATTR_STACKADDR`_ | Yes | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_THREAD_ATTR_STACKSIZE`_ | Yes | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_THREAD_CPUTIME`_ | 201712L | | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_THREAD_PRIO_INHERIT`_ | Yes | ``CONFIG_PRIORITY_INHERITANCE`` | +-------------------------------------------------+-------------+----------------------------------+ |`_POSIX_THREAD_PRIO_PROTECT`_ | Yes | ``CONFIG_PRIORITY_PROTECT`` | +-------------------------------------------------+-------------+----------------------------------+ | `_POSIX_THREAD_PRIORITY_SCHEDULING`_ | 201712L | | +-------------------------------------------------+-------------+----------------------------------+ | `_POSIX_THREAD_SPORADIC_SERVER`_ | Yes | ``CONFIG_SCHED_SPORADIC`` | +-------------------------------------------------+-------------+----------------------------------+ | `_POSIX_TIMEOUTS`_ [#fn4]_ | Yes | | +-------------------------------------------------+-------------+----------------------------------+ | `_POSIX_TIMERS`_ | Yes | ``!CONFIG_DISABLE_POSIX_TIMERS`` | +-------------------------------------------------+-------------+----------------------------------+ | `_POSIX2_C_DEV`_ | Yes [#fn5]_ | | +-------------------------------------------------+-------------+----------------------------------+ | `_POSIX2_SW_DEV`_ | Yes [#fn5]_ | | +-------------------------------------------------+-------------+----------------------------------+ .. [#fn3] NuttX provides dummy implementations for ``_POSIX_MEMLOCK`` and ``_POSIX_MEMLOCK_RANGE`` which is sufficient for devices without MMU, but doesn't meet the requirement for devices with MMU. .. [#fn4] Deprecated in new revisions of POSIX. Merged into other base options. .. [#fn5] Requred only for the development platform. For PSE54 this requirement is also for execution platform whis is not supported. Requirements for Other Standards: +-----------------------------+---------+---------+ | Symbol | Support | Remarks | +=============================+=========+=========+ | POSIX.26 | ? | | +-----------------------------+---------+---------+ POSIX PSE52 - Real-Time Controller ---------------------------------- The Realtime Controller System Profile (PSE52) includes all features from PSE51. Units of Functionality Requirements: +-----------------------------+-------------+---------------------+ | Symbol | Support | Remarks | +=============================+=============+=====================+ | `POSIX_C_LANG_MATH`_ | Yes [#fn6]_ | ``CONFIG_LIBM_XXX`` | +-----------------------------+-------------+---------------------+ | `POSIX_FD_MGMT`_ | Yes | | +-----------------------------+-------------+---------------------+ | `POSIX_FILE_SYSTEM`_ | Yes | | +-----------------------------+-------------+---------------------+ .. [#fn6] NuttX supports different libm implementations with different sets of supported functions. libm support in NuttX is controlled by Kconfig choice option. POSIX.1 Option Requirements +------------------------------------+---------+----------------------------+ | Symbol | Support | Remarks | +====================================+=========+============================+ | `_POSIX_MAPPED_FILES`_ | 201712L | | +------------------------------------+---------+----------------------------+ | `_POSIX_MESSAGE_PASSING`_ | Yes | ``!CONFIG_DISABLE_MQUEUE`` | +------------------------------------+---------+----------------------------+ | _POSIX_TRACE [#fn7]_ | No | | +------------------------------------+---------+----------------------------+ | _POSIX_TRACE_EVENT_FILTER [#fn7]_ | No | | +------------------------------------+---------+----------------------------+ | _POSIX_TRACE_LOG [#fn7]_ | No | | +------------------------------------+---------+----------------------------+ .. [#fn7] ``_POSIX_TRACE*`` are obsolete. POSIX PSE53 - Dedicated ----------------------- The Dedicated Realtime System Profile (PSE53) includes all features from PSE52 and PSE51. Units of Functionality Requirements: +-----------------------------+---------+------------------+ | Symbol | Support | Remarks | +=============================+=========+==================+ | POSIX_EVENT_MGMT [#fn8]_ | Yes | | +-----------------------------+---------+------------------+ | `POSIX_MULTI_PROCESS`_ | 25/29 | | +-----------------------------+---------+------------------+ | `POSIX_NETWORKING`_ | Yes | ``CONFIG_NET`` | +-----------------------------+---------+------------------+ | `POSIX_PIPE`_ | Yes | ``CONFIG_PIPES`` | +-----------------------------+---------+------------------+ | `POSIX_SIGNAL_JUMP`_ | No | | +-----------------------------+---------+------------------+ .. [#fn8] Deprecated in new revisions of POSIX. Merged into ``POSIX_DEVICE_IO``. POSIX.1 Option Requirements +---------------------------------+-------------+---------------------------+ | Symbol | Support | Remarks | +=================================+=============+===========================+ | `_POSIX_ASYNCHRONOUS_IO`_ | 201712L | ``CONFIG_FS_AIO`` | +---------------------------------+-------------+---------------------------+ | `_POSIX_CPUTIME`_ | 201712L | | +---------------------------------+-------------+---------------------------+ | `_POSIX_MEMORY_PROTECTION`_ | Yes [#fn9]_ | | +---------------------------------+-------------+---------------------------+ | `_POSIX_PRIORITIZED_IO`_ | 201712L | | +---------------------------------+-------------+---------------------------+ | `_POSIX_PRIORITY_SCHEDULING`_ | Yes | | +---------------------------------+-------------+---------------------------+ | `_POSIX_RAW_SOCKETS`_ | Yes | | +---------------------------------+-------------+---------------------------+ | `_POSIX_SPAWN`_ | 13/17 | ``CONFIG_BUILD_KERNEL`` | +---------------------------------+-------------+---------------------------+ | `_POSIX_SPORADIC_SERVER`_ | Yes | ``CONFIG_SCHED_SPORADIC`` | +---------------------------------+-------------+---------------------------+ | `_POSIX_THREAD_PROCESS_SHARED`_ | 201712L | | +---------------------------------+-------------+---------------------------+ .. [#fn9] NuttX provides dummy implementations for ``_POSIX_MEMORY_PROTECTION`` which is sufficient for devices without MMU, but doesn't meet the requirement for devices with MMU. POSIX PSE54 - Multipurpose -------------------------- The Multipurpose Realtime System Profile (PSE54) includes all features from PSE53, PSE52 and PSE51. Units of Functionality Requirements: +------------------------------+---------+--------------------------------+ | Symbol | Support | Remarks | +==============================+=========+================================+ | `POSIX_C_LANG_WIDE_CHAR`_ | | | +------------------------------+---------+--------------------------------+ | `POSIX_DEVICE_SPECIFIC`_ | 3/15 | ``CONFIG_TERMIOS=y`` | +------------------------------+---------+--------------------------------+ | `POSIX_FIFO`_ | Yes | ``CONFIG_DEV_FIFO_SIZE > 0`` | +------------------------------+---------+--------------------------------+ | `POSIX_FILE_ATTRIBUTES`_ | Yes | ``CONFIG_PSEUDOFS_ATTRIBUTES`` | +------------------------------+---------+--------------------------------+ | `POSIX_FILE_SYSTEM_EXT`_ | Yes | | +------------------------------+---------+--------------------------------+ | `POSIX_JOB_CONTROL`_ | 1/4 | | +------------------------------+---------+--------------------------------+ | `POSIX_REGEXP`_ | Yes | | +------------------------------+---------+--------------------------------+ | `POSIX_SHELL_FUNC`_ | 3/5 | | +------------------------------+---------+--------------------------------+ | `POSIX_STRING_MATCHING`_ | Yes | | +------------------------------+---------+--------------------------------+ | `POSIX_SYMBOLIC_LINKS`_ | Yes | ``CONFIG_PSEUDOFS_SOFTLINKS`` | +------------------------------+---------+--------------------------------+ | `POSIX_SYSTEM_DATABASE`_ | Yes | | +------------------------------+---------+--------------------------------+ | `POSIX_USER_GROUPS`_ | 8/10 | | +------------------------------+---------+--------------------------------+ | POSIX_WIDE_CHAR_IO [#fn10]_ | | | +------------------------------+---------+--------------------------------+ | `XSI_DYNAMIC_LINKING`_ | Yes | | +------------------------------+---------+--------------------------------+ | `XSI_SYSTEM_LOGGING`_ | 1/4 | | +------------------------------+---------+--------------------------------+ .. [#fn10] Deprecated in new revision of POSIX. Moved to ``POSIX_WIDE_CHAR_DEVICE_IO``. POSIX.1 Option Requirements +-----------------------------+---------+---------+ | Symbol | Support | Remarks | +=============================+=========+=========+ | `_POSIX_ADVISORY_INFO`_ | 2/4 | | +-----------------------------+---------+---------+ | `_POSIX_SAVED_IDS`_ | No | | +-----------------------------+---------+---------+ | `_POSIX_VDISABLE`_ | No | | +-----------------------------+---------+---------+ | `_POSIX2_CHAR_TERM`_ | ? | | +-----------------------------+---------+---------+ | `_POSIX2_FORT_RUN`_ | No | | +-----------------------------+---------+---------+ | `_POSIX2_UPE`_ | No | | +-----------------------------+---------+---------+ Functionality Requirements ========================== POSIX_C_LANG_JUMP ----------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`longjmp` | Yes | +--------------------------------+---------+ | :c:func:`setjmp` | Yes | +--------------------------------+---------+ POSIX_C_LANG_SUPPORT -------------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | abs() | Yes | +--------------------------------+---------+ | asctime() | Yes | +--------------------------------+---------+ | asctime_r() | Yes | +--------------------------------+---------+ | atof() | Yes | +--------------------------------+---------+ | atoi() | Yes | +--------------------------------+---------+ | atol() | Yes | +--------------------------------+---------+ | atoll() | Yes | +--------------------------------+---------+ | bsearch() | Yes | +--------------------------------+---------+ | calloc() | Yes | +--------------------------------+---------+ | ctime() | Yes | +--------------------------------+---------+ | ctime_r() | Yes | +--------------------------------+---------+ | difftime() | Yes | +--------------------------------+---------+ | div() | Yes | +--------------------------------+---------+ | feclearexcept() | No | +--------------------------------+---------+ | fegetenv() | No | +--------------------------------+---------+ | fegetexceptflag() | No | +--------------------------------+---------+ | fegetround() | No | +--------------------------------+---------+ | feholdexcept() | No | +--------------------------------+---------+ | feraiseexcept() | No | +--------------------------------+---------+ | fesetenv() | No | +--------------------------------+---------+ | fesetexceptflag() | No | +--------------------------------+---------+ | fesetround() | No | +--------------------------------+---------+ | fetestexcept() | No | +--------------------------------+---------+ | feupdateenv() | No | +--------------------------------+---------+ | free() | Yes | +--------------------------------+---------+ | gmtime() | Yes | +--------------------------------+---------+ | gmtime_r() | Yes | +--------------------------------+---------+ | imaxabs() | Yes | +--------------------------------+---------+ | imaxdiv() | Yes | +--------------------------------+---------+ | isalnum() | Yes | +--------------------------------+---------+ | isalpha() | Yes | +--------------------------------+---------+ | isblank() | Yes | +--------------------------------+---------+ | iscntrl() | Yes | +--------------------------------+---------+ | isdigit() | Yes | +--------------------------------+---------+ | isgraph() | Yes | +--------------------------------+---------+ | islower() | Yes | +--------------------------------+---------+ | isprint() | Yes | +--------------------------------+---------+ | ispunct() | Yes | +--------------------------------+---------+ | isspace() | Yes | +--------------------------------+---------+ | isupper() | Yes | +--------------------------------+---------+ | isxdigit() | Yes | +--------------------------------+---------+ | labs() | Yes | +--------------------------------+---------+ | ldiv() | Yes | +--------------------------------+---------+ | llabs() | Yes | +--------------------------------+---------+ | lldiv() | Yes | +--------------------------------+---------+ | localeconv() | Yes | +--------------------------------+---------+ | localtime() | Yes | +--------------------------------+---------+ | localtime_r() | Yes | +--------------------------------+---------+ | malloc() | Yes | +--------------------------------+---------+ | memchr() | Yes | +--------------------------------+---------+ | memcmp() | Yes | +--------------------------------+---------+ | memcpy() | Yes | +--------------------------------+---------+ | memmove() | Yes | +--------------------------------+---------+ | memset() | Yes | +--------------------------------+---------+ | mktime() | Yes | +--------------------------------+---------+ | qsort() | Yes | +--------------------------------+---------+ | rand() | Yes | +--------------------------------+---------+ | rand_r() | Yes | +--------------------------------+---------+ | realloc() | Yes | +--------------------------------+---------+ | setlocale() | Yes | +--------------------------------+---------+ | snprintf() | Yes | +--------------------------------+---------+ | sprintf() | Yes | +--------------------------------+---------+ | srand() | Yes | +--------------------------------+---------+ | sscanf() | Yes | +--------------------------------+---------+ | strcat() | Yes | +--------------------------------+---------+ | strchr() | Yes | +--------------------------------+---------+ | strcmp() | Yes | +--------------------------------+---------+ | strcoll() | Yes | +--------------------------------+---------+ | strcpy() | Yes | +--------------------------------+---------+ | strcspn() | Yes | +--------------------------------+---------+ | strerror() | Yes | +--------------------------------+---------+ | strerror_r() | Yes | +--------------------------------+---------+ | strftime() | Yes | +--------------------------------+---------+ | strlen() | Yes | +--------------------------------+---------+ | strncat() | Yes | +--------------------------------+---------+ | strncmp() | Yes | +--------------------------------+---------+ | strncpy() | Yes | +--------------------------------+---------+ | strpbrk() | Yes | +--------------------------------+---------+ | strrchr() | Yes | +--------------------------------+---------+ | strspn() | Yes | +--------------------------------+---------+ | strstr() | Yes | +--------------------------------+---------+ | strtod() | Yes | +--------------------------------+---------+ | strtof() | Yes | +--------------------------------+---------+ | strtoimax() | Yes | +--------------------------------+---------+ | strtok() | Yes | +--------------------------------+---------+ | strtok_r() | Yes | +--------------------------------+---------+ | strtol() | Yes | +--------------------------------+---------+ | strtold() | Yes | +--------------------------------+---------+ | strtoll() | Yes | +--------------------------------+---------+ | strtoul() | Yes | +--------------------------------+---------+ | strtoull() | Yes | +--------------------------------+---------+ | strtoumax() | Yes | +--------------------------------+---------+ | strxfrm() | Yes | +--------------------------------+---------+ | time() | Yes | +--------------------------------+---------+ | tolower() | Yes | +--------------------------------+---------+ | toupper() | Yes | +--------------------------------+---------+ | tzname | Yes | +--------------------------------+---------+ | tzset() | Yes | +--------------------------------+---------+ | va_arg() | Yes | +--------------------------------+---------+ | va_copy() | Yes | +--------------------------------+---------+ | va_end() | Yes | +--------------------------------+---------+ | va_start() | Yes | +--------------------------------+---------+ | vsnprintf() | Yes | +--------------------------------+---------+ | vsprintf() | Yes | +--------------------------------+---------+ | vsscanf() | Yes | +--------------------------------+---------+ POSIX_DEVICE_IO --------------- Device Input and Output: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`FD_CLR` | Yes | +--------------------------------+---------+ | :c:func:`FD_ISSET` | Yes | +--------------------------------+---------+ | :c:func:`FD_SET` | Yes | +--------------------------------+---------+ | :c:func:`FD_ZERO` | Yes | +--------------------------------+---------+ | :c:func:`clearerr` | Yes | +--------------------------------+---------+ | :c:func:`close` | Yes | +--------------------------------+---------+ | :c:func:`fclose` | Yes | +--------------------------------+---------+ | :c:func:`fdopen` | Yes | +--------------------------------+---------+ | :c:func:`feof` | Yes | +--------------------------------+---------+ | :c:func:`ferror` | Yes | +--------------------------------+---------+ | :c:func:`flush` | Yes | +--------------------------------+---------+ | :c:func:`fgetc` | Yes | +--------------------------------+---------+ | :c:func:`fgets` | Yes | +--------------------------------+---------+ | :c:func:`fileno` | Yes | +--------------------------------+---------+ | :c:func:`fopen` | Yes | +--------------------------------+---------+ | :c:func:`fprintf` | Yes | +--------------------------------+---------+ | :c:func:`fputc` | Yes | +--------------------------------+---------+ | :c:func:`fputs` | Yes | +--------------------------------+---------+ | :c:func:`fread` | Yes | +--------------------------------+---------+ | :c:func:`freopen` | Yes | +--------------------------------+---------+ | :c:func:`fscanf` | Yes | +--------------------------------+---------+ | :c:func:`fwrite` | Yes | +--------------------------------+---------+ | :c:func:`getc` | Yes | +--------------------------------+---------+ | :c:func:`getchar` | Yes | +--------------------------------+---------+ | :c:func:`open` | Yes | +--------------------------------+---------+ | :c:func:`perror` | Yes | +--------------------------------+---------+ | :c:func:`poll` | Yes | +--------------------------------+---------+ | posix_close() | No | +--------------------------------+---------+ | :c:func:`ppoll` | Yes | +--------------------------------+---------+ | :c:func:`printf` | Yes | +--------------------------------+---------+ | :c:func:`pread` | Yes | +--------------------------------+---------+ | :c:func:`pselect` | Yes | +--------------------------------+---------+ | :c:func:`putc` | Yes | +--------------------------------+---------+ | :c:func:`putchar` | Yes | +--------------------------------+---------+ | :c:func:`puts` | Yes | +--------------------------------+---------+ | :c:func:`pwrite` | Yes | +--------------------------------+---------+ | :c:func:`read` | Yes | +--------------------------------+---------+ | :c:func:`scanf` | Yes | +--------------------------------+---------+ | :c:func:`select` | Yes | +--------------------------------+---------+ | :c:func:`setbuf` | Yes | +--------------------------------+---------+ | :c:func:`setvbuf` | Yes | +--------------------------------+---------+ | stderr | Yes | +--------------------------------+---------+ | stdin | Yes | +--------------------------------+---------+ | stdout | Yes | +--------------------------------+---------+ | :c:func:`ungetc` | Yes | +--------------------------------+---------+ | :c:func:`vfprintf` | Yes | +--------------------------------+---------+ | :c:func:`vfscanf` | Yes | +--------------------------------+---------+ | :c:func:`vprintf` | Yes | +--------------------------------+---------+ | :c:func:`vscanf` | Yes | +--------------------------------+---------+ | :c:func:`write` | Yes | +--------------------------------+---------+ POSIX_FILE_LOCKING ------------------ Thread-Safe Stdio Locking: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`flockfile` | Yes | +--------------------------------+---------+ | :c:func:`ftrylockfile` | Yes | +--------------------------------+---------+ | :c:func:`funlockfile` | Yes | +--------------------------------+---------+ | :c:func:`getc_unlocked` | Yes | +--------------------------------+---------+ | :c:func:`getchar_unlocked` | Yes | +--------------------------------+---------+ | :c:func:`putc_unlocked` | Yes | +--------------------------------+---------+ | :c:func:`putchar_unlocked` | Yes | +--------------------------------+---------+ POSIX_SINGLE_PROCESS -------------------- Single Process: +--------------------------------+---------+ | API | Support | +================================+=========+ | confstr() | No | +--------------------------------+---------+ | environ | Yes | +--------------------------------+---------+ | errno | Yes | +--------------------------------+---------+ | :c:func:`getenv` | Yes | +--------------------------------+---------+ | secure_getenv() | No | +--------------------------------+---------+ | :c:func:`setenv` | Yes | +--------------------------------+---------+ | :c:func:`sysconf` | Yes | +--------------------------------+---------+ | :c:func:`uname` | Yes | +--------------------------------+---------+ | :c:func:`unsetenv` | Yes | +--------------------------------+---------+ POSIX_THREADS_BASE ------------------ Base Threads: +-----------------------------------------+---------+ | API | Support | +=========================================+=========+ | :c:func:`pthread_atfork` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_destroy` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_getdetachstate` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_getschedparam` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_init` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_setdetachstate` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_setschedparam` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cancel` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cleanup_pop` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cleanup_push` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cond_broadcast` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cond_clockwait` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cond_destroy` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cond_init` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cond_signal` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cond_timedwait` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_cond_wait` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_condattr_destroy` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_condattr_init` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_create` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_detach` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_equal` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_exit` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_getspecific` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_join` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_key_create` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_key_delete` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_kill` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutex_clocklock` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutex_destroy` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutex_init` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutex_lock` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutex_timedlock` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutex_trylock` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutex_unlock` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutexattr_destroy` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutexattr_init` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_once` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_self` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_setcancelstate` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_setcanceltype` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_setspecific` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_sigmask` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_testcancel` | Yes | +-----------------------------------------+---------+ | :c:func:`sched_yield` | Yes | +-----------------------------------------+---------+ POSIX_THREADS_EXT ----------------- Extended Threads: +-------------------------------------+---------+ | API | Support | +=====================================+=========+ | pthread_attr_getguardsize() | No | +-------------------------------------+---------+ | pthread_attr_setguardsize() | No | +-------------------------------------+---------+ | :c:func:`pthread_mutexattr_gettype` | Yes | +-------------------------------------+---------+ | :c:func:`pthread_mutexattr_settype` | Yes | +-------------------------------------+---------+ POSIX_C_LANG_MATH ----------------- Depends on the enabled ``libm`` implementation [#fn11]_. Maths Library: +--------------------------------+ | API | +================================+ | CMPLX() | +--------------------------------+ | CMPLXF() | +--------------------------------+ | CMPLXL() | +--------------------------------+ | acos() | +--------------------------------+ | acosf() | +--------------------------------+ | acosh() | +--------------------------------+ | acoshf() | +--------------------------------+ | acoshl() | +--------------------------------+ | acosl() | +--------------------------------+ | asin() | +--------------------------------+ | asinf() | +--------------------------------+ | asinh() | +--------------------------------+ | asinhf() | +--------------------------------+ | asinhl() | +--------------------------------+ | asinl() | +--------------------------------+ | atan() | +--------------------------------+ | atan2() | +--------------------------------+ | atan2f() | +--------------------------------+ | atan2l() | +--------------------------------+ | atanf() | +--------------------------------+ | atanh() | +--------------------------------+ | atanhf() | +--------------------------------+ | atanhl() | +--------------------------------+ | atanl() | +--------------------------------+ | cabs() | +--------------------------------+ | cabsf() | +--------------------------------+ | cabsl() | +--------------------------------+ | cacos() | +--------------------------------+ | cacosf() | +--------------------------------+ | cacosh() | +--------------------------------+ | cacoshf() | +--------------------------------+ | cacoshl() | +--------------------------------+ | cacosl() | +--------------------------------+ | carg() | +--------------------------------+ | cargf() | +--------------------------------+ | cargl() | +--------------------------------+ | casin() | +--------------------------------+ | casinf() | +--------------------------------+ | casinh() | +--------------------------------+ | casinhf() | +--------------------------------+ | casinhl() | +--------------------------------+ | casinl() | +--------------------------------+ | catan() | +--------------------------------+ | catanf() | +--------------------------------+ | catanh() | +--------------------------------+ | catanhf() | +--------------------------------+ | catanhl() | +--------------------------------+ | catanl() | +--------------------------------+ | cbrt() | +--------------------------------+ | cbrtf() | +--------------------------------+ | cbrtl() | +--------------------------------+ | ccos() | +--------------------------------+ | ccosf() | +--------------------------------+ | ccosh() | +--------------------------------+ | ccoshf() | +--------------------------------+ | ccoshl() | +--------------------------------+ | ccosl() | +--------------------------------+ | ceil() | +--------------------------------+ | ceilf() | +--------------------------------+ | ceill() | +--------------------------------+ | cexp() | +--------------------------------+ | cexpf() | +--------------------------------+ | cexpl() | +--------------------------------+ | cimag() | +--------------------------------+ | cimagf() | +--------------------------------+ | cimagl() | +--------------------------------+ | clog() | +--------------------------------+ | clogf() | +--------------------------------+ | clogl() | +--------------------------------+ | conj() | +--------------------------------+ | conjf() | +--------------------------------+ | conjl() | +--------------------------------+ | copysign() | +--------------------------------+ | copysignf() | +--------------------------------+ | copysignl() | +--------------------------------+ | cos() | +--------------------------------+ | cosf() | +--------------------------------+ | cosh() | +--------------------------------+ | coshf() | +--------------------------------+ | coshl() | +--------------------------------+ | cosl() | +--------------------------------+ | cpow() | +--------------------------------+ | cpowf() | +--------------------------------+ | cpowl() | +--------------------------------+ | cproj() | +--------------------------------+ | cprojf() | +--------------------------------+ | cprojl() | +--------------------------------+ | creal() | +--------------------------------+ | crealf() | +--------------------------------+ | creall() | +--------------------------------+ | csin() | +--------------------------------+ | csinf() | +--------------------------------+ | csinh() | +--------------------------------+ | csinhf() | +--------------------------------+ | csinhl() | +--------------------------------+ | csinl() | +--------------------------------+ | csqrt() | +--------------------------------+ | csqrtf() | +--------------------------------+ | csqrtl() | +--------------------------------+ | ctan() | +--------------------------------+ | ctanf() | +--------------------------------+ | ctanh() | +--------------------------------+ | ctanhf() | +--------------------------------+ | ctanhl() | +--------------------------------+ | ctanl() | +--------------------------------+ | erf() | +--------------------------------+ | erfc() | +--------------------------------+ | erfcf() | +--------------------------------+ | erfcl() | +--------------------------------+ | erff() | +--------------------------------+ | erfl() | +--------------------------------+ | exp() | +--------------------------------+ | exp2() | +--------------------------------+ | exp2f() | +--------------------------------+ | exp2l() | +--------------------------------+ | expf() | +--------------------------------+ | expl() | +--------------------------------+ | expm1() | +--------------------------------+ | expm1f() | +--------------------------------+ | expm1l() | +--------------------------------+ | fabs() | +--------------------------------+ | fabsf() | +--------------------------------+ | fabsl() | +--------------------------------+ | fdim() | +--------------------------------+ | fdimf() | +--------------------------------+ | fdiml() | +--------------------------------+ | floor() | +--------------------------------+ | floorf() | +--------------------------------+ | floorl() | +--------------------------------+ | fma() | +--------------------------------+ | fmaf() | +--------------------------------+ | fmal() | +--------------------------------+ | fmax() | +--------------------------------+ | fmaxf() | +--------------------------------+ | fmaxl() | +--------------------------------+ | fmin() | +--------------------------------+ | fminf() | +--------------------------------+ | fminl() | +--------------------------------+ | fmod() | +--------------------------------+ | fmodf() | +--------------------------------+ | fmodl() | +--------------------------------+ | fpclassify() | +--------------------------------+ | frexp() | +--------------------------------+ | frexpf() | +--------------------------------+ | frexpl() | +--------------------------------+ | hypot() | +--------------------------------+ | hypotf() | +--------------------------------+ | hypotl() | +--------------------------------+ | ilogb() | +--------------------------------+ | ilogbf() | +--------------------------------+ | ilogbl() | +--------------------------------+ | isfinite() | +--------------------------------+ | isgreater() | +--------------------------------+ | isgreaterequal() | +--------------------------------+ | isinf() | +--------------------------------+ | isless() | +--------------------------------+ | islessequal() | +--------------------------------+ | islessgreater() | +--------------------------------+ | isnan() | +--------------------------------+ | isnormal() | +--------------------------------+ | isunordered() | +--------------------------------+ | ldexp() | +--------------------------------+ | ldexpf() | +--------------------------------+ | ldexpl() | +--------------------------------+ | lgamma() | +--------------------------------+ | lgammaf() | +--------------------------------+ | lgammal() | +--------------------------------+ | llrint() | +--------------------------------+ | llrintf() | +--------------------------------+ | llrintl() | +--------------------------------+ | llround() | +--------------------------------+ | llroundf() | +--------------------------------+ | llroundl() | +--------------------------------+ | log() | +--------------------------------+ | log10() | +--------------------------------+ | log10f() | +--------------------------------+ | log10l() | +--------------------------------+ | log1p() | +--------------------------------+ | log1pf() | +--------------------------------+ | log1pl() | +--------------------------------+ | log2() | +--------------------------------+ | log2f() | +--------------------------------+ | log2l() | +--------------------------------+ | logb() | +--------------------------------+ | logbf() | +--------------------------------+ | logbl() | +--------------------------------+ | logf() | +--------------------------------+ | logl() | +--------------------------------+ | lrint() | +--------------------------------+ | lrintf() | +--------------------------------+ | lrintl() | +--------------------------------+ | lround() | +--------------------------------+ | lroundf() | +--------------------------------+ | lroundl() | +--------------------------------+ | modf() | +--------------------------------+ | modff() | +--------------------------------+ | modfl() | +--------------------------------+ | nan() | +--------------------------------+ | nanf() | +--------------------------------+ | nanl() | +--------------------------------+ | nearbyint() | +--------------------------------+ | nearbyintf() | +--------------------------------+ | nearbyintl() | +--------------------------------+ | nextafter() | +--------------------------------+ | nextafterf() | +--------------------------------+ | nextafterl() | +--------------------------------+ | nexttoward() | +--------------------------------+ | nexttowardf() | +--------------------------------+ | nexttowardl() | +--------------------------------+ | pow() | +--------------------------------+ | powf() | +--------------------------------+ | powl() | +--------------------------------+ | remainder() | +--------------------------------+ | remainderf() | +--------------------------------+ | remainderl() | +--------------------------------+ | remquo() | +--------------------------------+ | remquof() | +--------------------------------+ | remquol() | +--------------------------------+ | rint() | +--------------------------------+ | rintf() | +--------------------------------+ | rintl() | +--------------------------------+ | round() | +--------------------------------+ | roundf() | +--------------------------------+ | roundl() | +--------------------------------+ | scalbln() | +--------------------------------+ | scalblnf() | +--------------------------------+ | scalblnl() | +--------------------------------+ | scalbn() | +--------------------------------+ | scalbnf() | +--------------------------------+ | scalbnl() | +--------------------------------+ | signbit() | +--------------------------------+ | sin() | +--------------------------------+ | sinf() | +--------------------------------+ | sinh() | +--------------------------------+ | sinhf() | +--------------------------------+ | sinhl() | +--------------------------------+ | sinl() | +--------------------------------+ | sqrt() | +--------------------------------+ | sqrtf() | +--------------------------------+ | sqrtl() | +--------------------------------+ | tan() | +--------------------------------+ | tanf() | +--------------------------------+ | tanh() | +--------------------------------+ | tanhf() | +--------------------------------+ | tanhl() | +--------------------------------+ | tanl() | +--------------------------------+ | tgamma() | +--------------------------------+ | tgammaf() | +--------------------------------+ | tgammal() | +--------------------------------+ | trunc() | +--------------------------------+ | truncf() | +--------------------------------+ | truncl() | +--------------------------------+ .. [#fn11] NuttX supports different ``libm`` implementations with different sets of supported functions. ``libm`` support in NuttX is controlled by Kconfig choice option. POSIX_FD_MGMT ------------- File Descriptor Management: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`dup` | Yes | +--------------------------------+---------+ | :c:func:`dup2` | Yes | +--------------------------------+---------+ | :c:func:`dup3` | Yes | +--------------------------------+---------+ | :c:func:`fcntl` | Yes | +--------------------------------+---------+ | :c:func:`fgetpos` | Yes | +--------------------------------+---------+ | :c:func:`fseek` | Yes | +--------------------------------+---------+ | :c:func:`fseeko` | Yes | +--------------------------------+---------+ | :c:func:`fsetpos` | Yes | +--------------------------------+---------+ | :c:func:`ftell` | Yes | +--------------------------------+---------+ | :c:func:`ftello` | Yes | +--------------------------------+---------+ | :c:func:`ftruncate` | Yes | +--------------------------------+---------+ | :c:func:`lseek` | Yes | +--------------------------------+---------+ | :c:func:`rewind` | Yes | +--------------------------------+---------+ POSIX_FILE_SYSTEM ----------------- File System: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`access` | Yes | +--------------------------------+---------+ | :c:func:`chdir` | Yes | +--------------------------------+---------+ | :c:func:`closedir` | Yes | +--------------------------------+---------+ | :c:func:`creat` | Yes | +--------------------------------+---------+ | :c:func:`fchdir` | Yes | +--------------------------------+---------+ | :c:func:`fpathconf` | Yes | +--------------------------------+---------+ | :c:func:`fstat` | Yes | +--------------------------------+---------+ | :c:func:`fstatvfs` | Yes | +--------------------------------+---------+ | :c:func:`futimens` | Yes | +--------------------------------+---------+ | :c:func:`getcwd` | Yes | +--------------------------------+---------+ | :c:func:`link` | Yes | +--------------------------------+---------+ | :c:func:`mkdir` | Yes | +--------------------------------+---------+ | :c:func:`mkostemp` | Yes | +--------------------------------+---------+ | :c:func:`mkstemp` | Yes | +--------------------------------+---------+ | :c:func:`opendir` | Yes | +--------------------------------+---------+ | :c:func:`pathconf` | Yes | +--------------------------------+---------+ | posix_getdents() | No | +--------------------------------+---------+ | :c:func:`readdir` | Yes | +--------------------------------+---------+ | :c:func:`remove` | Yes | +--------------------------------+---------+ | :c:func:`rename` | Yes | +--------------------------------+---------+ | :c:func:`rewinddir` | Yes | +--------------------------------+---------+ | :c:func:`rmdir` | Yes | +--------------------------------+---------+ | :c:func:`stat` | Yes | +--------------------------------+---------+ | :c:func:`statvfs` | Yes | +--------------------------------+---------+ | :c:func:`tmpfile` | Yes | +--------------------------------+---------+ | :c:func:`tmpnam` | Yes | +--------------------------------+---------+ | :c:func:`truncate` | Yes | +--------------------------------+---------+ | :c:func:`unlink` | Yes | +--------------------------------+---------+ POSIX_MULTI_PROCESS ------------------- Multiple Processes: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`_Exit` | Yes | +--------------------------------+---------+ | _Fork() | No | +--------------------------------+---------+ | :c:func:`_exit` | Yes | +--------------------------------+---------+ | :c:func:`assert` | Yes | +--------------------------------+---------+ | :c:func:`at_quick_exit` | Yes | +--------------------------------+---------+ | :c:func:`atexit` | Yes | +--------------------------------+---------+ | :c:func:`clock` | Yes | +--------------------------------+---------+ | :c:func:`execl` | Yes | +--------------------------------+---------+ | :c:func:`execle` | Yes | +--------------------------------+---------+ | :c:func:`execlp` | Yes | +--------------------------------+---------+ | :c:func:`execv` | Yes | +--------------------------------+---------+ | :c:func:`execve` | Yes | +--------------------------------+---------+ | :c:func:`execvp` | Yes | +--------------------------------+---------+ | :c:func:`exit` | Yes | +--------------------------------+---------+ | fork() | No | +--------------------------------+---------+ | :c:func:`getpgrp` | Yes | +--------------------------------+---------+ | :c:func:`getpgid` | Yes | +--------------------------------+---------+ | :c:func:`getpid` | Yes | +--------------------------------+---------+ | :c:func:`getppid` | Yes | +--------------------------------+---------+ | :c:func:`getrlimit` | Yes | +--------------------------------+---------+ | getsid() | No | +--------------------------------+---------+ | :c:func:`quick_exit` | Yes | +--------------------------------+---------+ | :c:func:`setrlimit` | Yes | +--------------------------------+---------+ | setsid() | No | +--------------------------------+---------+ | :c:func:`sleep` | Yes | +--------------------------------+---------+ | :c:func:`times` | Yes | +--------------------------------+---------+ | :c:func:`wait` | Yes | +--------------------------------+---------+ | :c:func:`waitid` | Yes | +--------------------------------+---------+ | :c:func:`waitpid` | Yes | +--------------------------------+---------+ POSIX_NETWORKING ---------------- Networking: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`accept` | Yes | +--------------------------------+---------+ | :c:func:`accept4` | Yes | +--------------------------------+---------+ | :c:func:`be16toh` | Yes | +--------------------------------+---------+ | :c:func:`be32toh` | Yes | +--------------------------------+---------+ | :c:func:`be64toh` | Yes | +--------------------------------+---------+ | :c:func:`bind` | Yes | +--------------------------------+---------+ | :c:func:`connect` | Yes | +--------------------------------+---------+ | :c:func:`endhostent` | Yes | +--------------------------------+---------+ | :c:func:`endnetent` | Yes | +--------------------------------+---------+ | :c:func:`endprotoent` | Yes | +--------------------------------+---------+ | :c:func:`endservent` | Yes | +--------------------------------+---------+ | :c:func:`freeaddrinfo` | Yes | +--------------------------------+---------+ | :c:func:`gai_strerror` | Yes | +--------------------------------+---------+ | :c:func:`getaddrinfo` | Yes | +--------------------------------+---------+ | :c:func:`gethostent` | Yes | +--------------------------------+---------+ | :c:func:`gethostname` | Yes | +--------------------------------+---------+ | :c:func:`getnameinfo` | Yes | +--------------------------------+---------+ | :c:func:`getnetbyaddr` | Yes | +--------------------------------+---------+ | :c:func:`getnetbyname` | Yes | +--------------------------------+---------+ | :c:func:`getnetent` | Yes | +--------------------------------+---------+ | :c:func:`getpeername` | Yes | +--------------------------------+---------+ | :c:func:`getprotobyname` | Yes | +--------------------------------+---------+ | :c:func:`getprotobynumber` | Yes | +--------------------------------+---------+ | :c:func:`getprotoent` | Yes | +--------------------------------+---------+ | :c:func:`getservbyname` | Yes | +--------------------------------+---------+ | :c:func:`getservbyport` | Yes | +--------------------------------+---------+ | :c:func:`getservent` | Yes | +--------------------------------+---------+ | :c:func:`getsockname` | Yes | +--------------------------------+---------+ | :c:func:`getsockopt` | Yes | +--------------------------------+---------+ | :c:func:`htobe16` | Yes | +--------------------------------+---------+ | :c:func:`htobe32` | Yes | +--------------------------------+---------+ | :c:func:`htobe64` | Yes | +--------------------------------+---------+ | :c:func:`htole16` | Yes | +--------------------------------+---------+ | :c:func:`htole32` | Yes | +--------------------------------+---------+ | :c:func:`htole64` | Yes | +--------------------------------+---------+ | :c:func:`htonl` | Yes | +--------------------------------+---------+ | :c:func:`htons` | Yes | +--------------------------------+---------+ | :c:func:`if_freenameindex` | Yes | +--------------------------------+---------+ | :c:func:`if_indextoname` | Yes | +--------------------------------+---------+ | :c:func:`if_nameindex` | Yes | +--------------------------------+---------+ | :c:func:`if_nametoindex` | Yes | +--------------------------------+---------+ | :c:func:`inet_addr` | Yes | +--------------------------------+---------+ | :c:func:`inet_ntoa` | Yes | +--------------------------------+---------+ | :c:func:`inet_ntop` | Yes | +--------------------------------+---------+ | :c:func:`inet_pton` | Yes | +--------------------------------+---------+ | :c:func:`le16toh` | Yes | +--------------------------------+---------+ | :c:func:`le32toh` | Yes | +--------------------------------+---------+ | :c:func:`le64toh` | Yes | +--------------------------------+---------+ | :c:func:`listen` | Yes | +--------------------------------+---------+ | :c:func:`ntohl` | Yes | +--------------------------------+---------+ | :c:func:`ntohs` | Yes | +--------------------------------+---------+ | :c:func:`recv` | Yes | +--------------------------------+---------+ | :c:func:`recvfrom` | Yes | +--------------------------------+---------+ | :c:func:`recvmsg` | Yes | +--------------------------------+---------+ | :c:func:`send` | Yes | +--------------------------------+---------+ | :c:func:`sendmsg` | Yes | +--------------------------------+---------+ | :c:func:`sendto` | Yes | +--------------------------------+---------+ | :c:func:`sethostent` | Yes | +--------------------------------+---------+ | :c:func:`setnetent` | Yes | +--------------------------------+---------+ | :c:func:`setprotoent` | Yes | +--------------------------------+---------+ | :c:func:`setservent` | Yes | +--------------------------------+---------+ | :c:func:`setsockopt` | Yes | +--------------------------------+---------+ | :c:func:`shutdown` | Yes | +--------------------------------+---------+ | :c:func:`socket` | Yes | +--------------------------------+---------+ | :c:func:`sockatmark` | Yes | +--------------------------------+---------+ | :c:func:`socketpair` | Yes | +--------------------------------+---------+ POSIX_PIPE ---------- Pipe: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`pipe` | Yes | +--------------------------------+---------+ | :c:func:`pipe2` | Yes | +--------------------------------+---------+ POSIX_SIGNAL_JUMP ----------------- Signal Jump Functions: +--------------------------------+---------+ | API | Support | +================================+=========+ | siglongjmp() | No | +--------------------------------+---------+ | sigsetjmp() | No | +--------------------------------+---------+ POSIX_C_LANG_WIDE_CHAR ---------------------- Wide-Character ISO C Library: +--------------------------------+---------+ | API | Support | +================================+=========+ | btowc() | Yes | +--------------------------------+---------+ | iswalnum() | Yes | +--------------------------------+---------+ | iswalpha() | Yes | +--------------------------------+---------+ | iswblank() | Yes | +--------------------------------+---------+ | iswcntrl() | Yes | +--------------------------------+---------+ | iswctype() | Yes | +--------------------------------+---------+ | iswdigit() | Yes | +--------------------------------+---------+ | iswgraph() | Yes | +--------------------------------+---------+ | iswlower() | Yes | +--------------------------------+---------+ | iswprint() | Yes | +--------------------------------+---------+ | iswpunct() | Yes | +--------------------------------+---------+ | iswspace() | Yes | +--------------------------------+---------+ | iswupper() | Yes | +--------------------------------+---------+ | iswxdigit() | Yes | +--------------------------------+---------+ | mblen() | Yes | +--------------------------------+---------+ | mbrlen() | Yes | +--------------------------------+---------+ | mbrtowc() | Yes | +--------------------------------+---------+ | mbsinit() | Yes | +--------------------------------+---------+ | mbsrtowcs() | Yes | +--------------------------------+---------+ | mbstowcs() | Yes | +--------------------------------+---------+ | mbtowc() | Yes | +--------------------------------+---------+ | swprintf() | Yes | +--------------------------------+---------+ | swscanf() | Yes | +--------------------------------+---------+ | towctrans() | Yes | +--------------------------------+---------+ | towlower() | Yes | +--------------------------------+---------+ | towupper() | Yes | +--------------------------------+---------+ | vswprintf() | Yes | +--------------------------------+---------+ | vswscanf() | Yes | +--------------------------------+---------+ | wcrtomb() | Yes | +--------------------------------+---------+ | wcscat() | Yes | +--------------------------------+---------+ | wcschr() | Yes | +--------------------------------+---------+ | wcscmp() | Yes | +--------------------------------+---------+ | wcscoll() | Yes | +--------------------------------+---------+ | wcscpy() | Yes | +--------------------------------+---------+ | wcscspn() | Yes | +--------------------------------+---------+ | wcsftime() | Yes | +--------------------------------+---------+ | wcslen() | Yes | +--------------------------------+---------+ | wcsncat() | Yes | +--------------------------------+---------+ | wcsncmp() | Yes | +--------------------------------+---------+ | wcsncpy() | Yes | +--------------------------------+---------+ | wcspbrk() | Yes | +--------------------------------+---------+ | wcsrchr() | Yes | +--------------------------------+---------+ | wcsrtombs() | Yes | +--------------------------------+---------+ | wcsspn() | Yes | +--------------------------------+---------+ | wcsstr() | Yes | +--------------------------------+---------+ | wcstod() | Yes | +--------------------------------+---------+ | wcstof() | Yes | +--------------------------------+---------+ | wcstoimax() | Yes | +--------------------------------+---------+ | wcstok() | Yes | +--------------------------------+---------+ | wcstol() | Yes | +--------------------------------+---------+ | wcstold() | Yes | +--------------------------------+---------+ | wcstoll() | Yes | +--------------------------------+---------+ | wcstombs() | Yes | +--------------------------------+---------+ | wcstoul() | Yes | +--------------------------------+---------+ | wcstoull() | Yes | +--------------------------------+---------+ | wcstoumax() | Yes | +--------------------------------+---------+ | wcsxfrm() | Yes | +--------------------------------+---------+ | wctob() | Yes | +--------------------------------+---------+ | wctomb() | Yes | +--------------------------------+---------+ | wctrans() | Yes | +--------------------------------+---------+ | wctype() | Yes | +--------------------------------+---------+ | wmemchr() | Yes | +--------------------------------+---------+ | wmemcmp() | Yes | +--------------------------------+---------+ | wmemcpy() | Yes | +--------------------------------+---------+ | wmemmove() | Yes | +--------------------------------+---------+ | wmemset() | Yes | +--------------------------------+---------+ POSIX_DEVICE_SPECIFIC --------------------- General Terminal: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`cfgetispeed` | Yes | +--------------------------------+---------+ | :c:func:`cfgetospeed` | Yes | +--------------------------------+---------+ | :c:func:`cfsetispeed` | Yes | +--------------------------------+---------+ | :c:func:`cfsetospeed` | Yes | +--------------------------------+---------+ | ctermid() | No | +--------------------------------+---------+ | :c:func:`isatty` | Yes | +--------------------------------+---------+ | :c:func:`tcdrain` | Yes | +--------------------------------+---------+ | :c:func:`tcflow` | Yes | +--------------------------------+---------+ | :c:func:`tcflush` | Yes | +--------------------------------+---------+ | :c:func:`tcgetattr` | Yes | +--------------------------------+---------+ | tcgetwinsize() | No | +--------------------------------+---------+ | :c:func:`tcsendbreak` | Yes | +--------------------------------+---------+ | :c:func:`tcsetattr` | Yes | +--------------------------------+---------+ | tcsetwinsize() | No | +--------------------------------+---------+ | :c:func:`ttyname` | Yes | +--------------------------------+---------+ POSIX_FIFO ---------- FIFO: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`mkfifo` | Yes | +--------------------------------+---------+ POSIX_FILE_ATTRIBUTES --------------------- File Attributes: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`chmod` | Yes | +--------------------------------+---------+ | :c:func:`chown` | Yes | +--------------------------------+---------+ | :c:func:`fchmod` | Yes | +--------------------------------+---------+ | :c:func:`fchown` | Yes | +--------------------------------+---------+ | :c:func:`umask` | Yes | +--------------------------------+---------+ POSIX_FILE_SYSTEM_EXT --------------------- File System Extensions: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`alphasort` | Yes | +--------------------------------+---------+ | :c:func:`dirfd` | Yes | +--------------------------------+---------+ | :c:func:`getdelim` | Yes | +--------------------------------+---------+ | :c:func:`getline` | Yes | +--------------------------------+---------+ | :c:func:`mkdtemp` | Yes | +--------------------------------+---------+ | :c:func:`scandir` | Yes | +--------------------------------+---------+ POSIX_JOB_CONTROL ----------------- Job Control: +--------------------------------+---------+ | API | Support | +================================+=========+ | setpgid() | No | +--------------------------------+---------+ | tcgetpgrp() | No | +--------------------------------+---------+ | tcsetpgrp() | No | +--------------------------------+---------+ | :c:func:`tcgetsid` | Yes | +--------------------------------+---------+ POSIX_REGEXP ------------ Regular Expressions: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`regcomp` | Yes | +--------------------------------+---------+ | :c:func:`regerror` | Yes | +--------------------------------+---------+ | :c:func:`regexec` | Yes | +--------------------------------+---------+ | :c:func:`regfree` | Yes | +--------------------------------+---------+ POSIX_SHELL_FUNC ---------------- Shell and Utilities: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`pclose` | Yes | +--------------------------------+---------+ | :c:func:`popen` | Yes | +--------------------------------+---------+ | :c:func:`system` | Yes | +--------------------------------+---------+ | wordexp() | No | +--------------------------------+---------+ | wordfree() | No | +--------------------------------+---------+ POSIX_STRING_MATCHING --------------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`fnmatch` | Yes | +--------------------------------+---------+ | :c:func:`getopt` | Yes | +--------------------------------+---------+ | optarg | Yes | +--------------------------------+---------+ | optind | Yes | +--------------------------------+---------+ | opterr | Yes | +--------------------------------+---------+ | optopt | Yes | +--------------------------------+---------+ POSIX_SYMBOLIC_LINKS -------------------- Symbolic Links: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`lchown` | Yes | +--------------------------------+---------+ | :c:func:`lstat` | Yes | +--------------------------------+---------+ | :c:func:`readlink` | Yes | +--------------------------------+---------+ | :c:func:`realpath` | Yes | +--------------------------------+---------+ | :c:func:`symlink` | Yes | +--------------------------------+---------+ POSIX_SYSTEM_DATABASE --------------------- System Database: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`getgrgid` | Yes | +--------------------------------+---------+ | :c:func:`getgrnam` | Yes | +--------------------------------+---------+ | :c:func:`getpwnam` | Yes | +--------------------------------+---------+ | :c:func:`getpwuid` | Yes | +--------------------------------+---------+ POSIX_USER_GROUPS ----------------- User and Group: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`getegid` | Yes | +--------------------------------+---------+ | :c:func:`geteuid` | Yes | +--------------------------------+---------+ | :c:func:`getgid` | Yes | +--------------------------------+---------+ | getgroups() | No | +--------------------------------+---------+ | getlogin() | No | +--------------------------------+---------+ | :c:func:`getuid` | Yes | +--------------------------------+---------+ | :c:func:`setegid` | Yes | +--------------------------------+---------+ | :c:func:`seteuid` | Yes | +--------------------------------+---------+ | :c:func:`setgid` | Yes | +--------------------------------+---------+ | :c:func:`setuid` | Yes | +--------------------------------+---------+ POSIX_WIDE_CHAR_DEVICE_IO ------------------------- Device Input and Output: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`fgetwc` | Yes | +--------------------------------+---------+ | :c:func:`fgetws` | Yes | +--------------------------------+---------+ | :c:func:`fputwc` | Yes | +--------------------------------+---------+ | :c:func:`fputws` | Yes | +--------------------------------+---------+ | :c:func:`fwide` | Yes | +--------------------------------+---------+ | :c:func:`fwprintf` | Yes | +--------------------------------+---------+ | :c:func:`fwscanf` | Yes | +--------------------------------+---------+ | :c:func:`getwc` | Yes | +--------------------------------+---------+ | :c:func:`getwchar` | Yes | +--------------------------------+---------+ | open_wmemstream() | No | +--------------------------------+---------+ | :c:func:`putwc` | Yes | +--------------------------------+---------+ | :c:func:`putwchar` | Yes | +--------------------------------+---------+ | :c:func:`ungetwc` | Yes | +--------------------------------+---------+ | :c:func:`vfwprintf` | Yes | +--------------------------------+---------+ | :c:func:`vfwscanf` | Yes | +--------------------------------+---------+ | :c:func:`vwprintf` | Yes | +--------------------------------+---------+ | :c:func:`vwscanf` | Yes | +--------------------------------+---------+ | :c:func:`wprintf` | Yes | +--------------------------------+---------+ | :c:func:`wscanf` | Yes | +--------------------------------+---------+ XSI_C_LANG_SUPPORT ------------------ XSI General C Library: +--------------------------------+---------+ | API | Support | +================================+=========+ | a64l() | No | +--------------------------------+---------+ | daylight | No | +--------------------------------+---------+ | :c:func:`drand48` | Yes | +--------------------------------+---------+ | :c:func:`erand48` | Yes | +--------------------------------+---------+ | :c:func:`ffs` | Yes | +--------------------------------+---------+ | :c:func:`ffsl` | Yes | +--------------------------------+---------+ | :c:func:`ffsll` | Yes | +--------------------------------+---------+ | getdate() | No | +--------------------------------+---------+ | :c:func:`hcreate` | Yes | +--------------------------------+---------+ | :c:func:`hdestroy` | Yes | +--------------------------------+---------+ | :c:func:`hsearch` | Yes | +--------------------------------+---------+ | initstate() | No | +--------------------------------+---------+ | insque() | No | +--------------------------------+---------+ | :c:func:`jrand48` | Yes | +--------------------------------+---------+ | l64a() | No | +--------------------------------+---------+ | :c:func:`lcong48` | Yes | +--------------------------------+---------+ | lfind() | No | +--------------------------------+---------+ | :c:func:`lrand48` | Yes | +--------------------------------+---------+ | lsearch() | No | +--------------------------------+---------+ | :c:func:`memccpy` | Yes | +--------------------------------+---------+ | :c:func:`mrand48` | Yes | +--------------------------------+---------+ | :c:func:`nrand48` | Yes | +--------------------------------+---------+ | :c:func:`random` | Yes | +--------------------------------+---------+ | remque() | No | +--------------------------------+---------+ | :c:func:`seed48` | Yes | +--------------------------------+---------+ | setstate() | No | +--------------------------------+---------+ | signgam | No | +--------------------------------+---------+ | :c:func:`srand48` | Yes | +--------------------------------+---------+ | :c:func:`srandom` | Yes | +--------------------------------+---------+ | :c:func:`strptime` | Yes | +--------------------------------+---------+ | :c:func:`swab` | Yes | +--------------------------------+---------+ | tdelete() | No | +--------------------------------+---------+ | tfind() | No | +--------------------------------+---------+ | timezone | No | +--------------------------------+---------+ | tsearch() | No | +--------------------------------+---------+ | twalk() | No | +--------------------------------+---------+ XSI_DBM ------- XSI Database Management: +--------------------------------+---------+ | API | Support | +================================+=========+ | dbm_clearerr() | No | +--------------------------------+---------+ | dbm_close() | No | +--------------------------------+---------+ | dbm_delete() | No | +--------------------------------+---------+ | dbm_error() | No | +--------------------------------+---------+ | dbm_fetch() | No | +--------------------------------+---------+ | dbm_firstkey() | No | +--------------------------------+---------+ | dbm_nextkey() | No | +--------------------------------+---------+ | dbm_open() | No | +--------------------------------+---------+ | dbm_store() | No | +--------------------------------+---------+ XSI_DEVICE_IO ------------- XSI Device Input and Output: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`fmtmsg` | Yes | +--------------------------------+---------+ | :c:func:`readv` | Yes | +--------------------------------+---------+ | :c:func:`writev` | Yes | +--------------------------------+---------+ XSI_DEVICE_SPECIFIC ------------------- XSI General Terminal: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`grantpt` | Yes | +--------------------------------+---------+ | :c:func:`posix_openpt` | Yes | +--------------------------------+---------+ | :c:func:`ptsname` | Yes | +--------------------------------+---------+ | :c:func:`unlockpt` | Yes | +--------------------------------+---------+ XSI_DYNAMIC_LINKING ------------------- Dynamic Linking: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`dladdr` | Yes | +--------------------------------+---------+ | :c:func:`dlclose` | Yes | +--------------------------------+---------+ | :c:func:`dlerror` | Yes | +--------------------------------+---------+ | :c:func:`dlopen` | Yes | +--------------------------------+---------+ | :c:func:`dlsym` | Yes | +--------------------------------+---------+ XSI_FD_MGMT ----------- XSI File Descriptor Management: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`truncate` | Yes | +--------------------------------+---------+ XSI_FILE_SYSTEM --------------- XSI File System: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`basename` | Yes | +--------------------------------+---------+ | :c:func:`dirname` | Yes | +--------------------------------+---------+ | :c:func:`lockf` | Yes | +--------------------------------+---------+ | :c:func:`mknod` | Yes | +--------------------------------+---------+ | :c:func:`nftw` | Yes | +--------------------------------+---------+ | :c:func:`seekdir` | Yes | +--------------------------------+---------+ | :c:func:`sync` | Yes | +--------------------------------+---------+ | :c:func:`telldir` | Yes | +--------------------------------+---------+ | :c:func:`utimes` | Yes | +--------------------------------+---------+ XSI_I18N -------- XSI Internationalization: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`catclose` | Yes | +--------------------------------+---------+ | :c:func:`catgets` | Yes | +--------------------------------+---------+ | :c:func:`catopen` | Yes | +--------------------------------+---------+ | :c:func:`nl_langinfo` | Yes | +--------------------------------+---------+ XSI_IPC ------- XSI Interprocess Communication: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`ftok` | Yes | +--------------------------------+---------+ | :c:func:`msgctl` | Yes | +--------------------------------+---------+ | :c:func:`msgget` | Yes | +--------------------------------+---------+ | :c:func:`msgrcv` | Yes | +--------------------------------+---------+ | :c:func:`msgsnd` | Yes | +--------------------------------+---------+ | :c:func:`semctl` | No | +--------------------------------+---------+ | :c:func:`semget` | No | +--------------------------------+---------+ | :c:func:`semop` | No | +--------------------------------+---------+ | :c:func:`shmat` | Yes | +--------------------------------+---------+ | :c:func:`shmctl` | Yes | +--------------------------------+---------+ | :c:func:`shmdt` | Yes | +--------------------------------+---------+ | :c:func:`shmget` | Yes | +--------------------------------+---------+ XSI_JOB_CONTROL --------------- XSI Job Control: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`tcgetsid` | Yes | +--------------------------------+---------+ XSI_JUMP -------- XSI Jump Functions: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`_longjmp` | Yes | +--------------------------------+---------+ | :c:func:`_setjmp` | Yes | +--------------------------------+---------+ XSI_MATH -------- Depends on the enabled ``libm`` implementation [#fn12]_. XSI Maths Library: +--------------------------------+ | API | +================================+ | j0() | +--------------------------------+ | j1() | +--------------------------------+ | jn() | +--------------------------------+ | scalb() | +--------------------------------+ | y0() | +--------------------------------+ | y1() | +--------------------------------+ | yn() | +--------------------------------+ .. [#fn12] NuttX supports different ``libm`` implementations with different sets of supported functions. ``libm`` support in NuttX is controlled by Kconfig choice option. XSI_MULTI_PROCESS ----------------- XSI Multiple Process: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`getpgid` | Yes | +--------------------------------+---------+ | :c:func:`getpriority` | Yes | +--------------------------------+---------+ | :c:func:`getrlimit` | Yes | +--------------------------------+---------+ | :c:func:`getrusage` | Yes | +--------------------------------+---------+ | getsid() | No | +--------------------------------+---------+ | :c:func:`nice` | Yes | +--------------------------------+---------+ | setpgrp() | No | +--------------------------------+---------+ | :c:func:`setpriority` | Yes | +--------------------------------+---------+ | :c:func:`setrlimit` | Yes | +--------------------------------+---------+ | ulimit() | No | +--------------------------------+---------+ | :c:func:`usleep` | Yes | +--------------------------------+---------+ | :c:func:`vfork` | Yes | +--------------------------------+---------+ | :c:func:`waitid` | Yes | +--------------------------------+---------+ XSI_SIGNALS ----------- XSI Signal: +--------------------------------+---------+ | API | Support | +================================+=========+ | bsd_signal() | No | +--------------------------------+---------+ | :c:func:`killpg` | Yes | +--------------------------------+---------+ | :c:func:`sigaltstack` | Yes | +--------------------------------+---------+ | :c:func:`sighold` | Yes | +--------------------------------+---------+ | :c:func:`sigignore` | Yes | +--------------------------------+---------+ | :c:func:`siginterrupt` | Yes | +--------------------------------+---------+ | :c:func:`sigpause` | Yes | +--------------------------------+---------+ | :c:func:`sigrelse` | Yes | +--------------------------------+---------+ | :c:func:`sigset` | Yes | +--------------------------------+---------+ | ualarm() | No | +--------------------------------+---------+ XSI_SINGLE_PROCESS ------------------ XSI Single Process: +--------------------------------+---------+ | API | Support | +================================+=========+ | gethostid() | No | +--------------------------------+---------+ | :c:func:`gettimeofday` | Yes | +--------------------------------+---------+ | :c:func:`putenv` | Yes | +--------------------------------+---------+ XSI_SYSTEM_DATABASE ------------------- XSI System Database: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`endpwent` | Yes | +--------------------------------+---------+ | :c:func:`getpwent` | Yes | +--------------------------------+---------+ | :c:func:`setpwent` | Yes | +--------------------------------+---------+ XSI_SYSTEM_LOGGING ------------------ XSI System Logging: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`closelog` | No | +--------------------------------+---------+ | :c:func:`openlog` | No | +--------------------------------+---------+ | :c:func:`setlogmask` | Yes | +--------------------------------+---------+ | :c:func:`syslog` | Yes | +--------------------------------+---------+ XSI_THREADS_EXT --------------- XSI Threads Extensions: +---------------------------------+---------+ | API | Support | +=================================+=========+ | :c:func:`pthread_attr_getstack` | Yes | +---------------------------------+---------+ | :c:func:`pthread_attr_setstack` | Yes | +---------------------------------+---------+ | pthread_getconcurrency() | No | +---------------------------------+---------+ | pthread_setconcurrency() | No | +---------------------------------+---------+ XSI_TIMERS ---------- XSI Timers: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`getitimer` | Yes | +--------------------------------+---------+ | :c:func:`setitimer` | Yes | +--------------------------------+---------+ XSI_USER_GROUPS --------------- XSI User and Group: +--------------------------------+---------+ | API | Support | +================================+=========+ | endgrent() | No | +--------------------------------+---------+ | endutxent() | No | +--------------------------------+---------+ | getgrent() | No | +--------------------------------+---------+ | getutxent() | No | +--------------------------------+---------+ | getutxid() | No | +--------------------------------+---------+ | getutxline() | No | +--------------------------------+---------+ | pututxline() | No | +--------------------------------+---------+ | setgrent() | No | +--------------------------------+---------+ | :c:func:`setregid` | Yes | +--------------------------------+---------+ | :c:func:`setreuid` | Yes | +--------------------------------+---------+ | setutxent() | No | +--------------------------------+---------+ XSI_WIDE_CHAR ------------- XSI Wide-Character Library: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`wcswidth` | Yes | +--------------------------------+---------+ | :c:func:`wcwidth` | Yes | +--------------------------------+---------+ POSIX.1 Option Requirements =========================== _POSIX_CLOCK_SELECTION ---------------------- Clock Selection: +-------------------------------------+---------+ | API | Support | +=====================================+=========+ | :c:func:`clock_nanosleep` | Yes | +-------------------------------------+---------+ | :c:func:`pthread_condattr_getclock` | Yes | +-------------------------------------+---------+ | :c:func:`pthread_condattr_setclock` | Yes | +-------------------------------------+---------+ _POSIX_FSYNC ------------ File Synchronization: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`fsync` [#fn13]_ | Yes | +--------------------------------+---------+ .. [#fn13] Revisit: why ``#undef _POSIX_FSYNC`` in ``unistd.h`` ? _POSIX_IPV6 ----------- No functions under this option. _POSIX_MEMLOCK -------------- +--------------------------------+----------------+ | API | Support | +================================+================+ | :c:func:`mlockall` | Dummy [#fn14]_ | +--------------------------------+----------------+ | :c:func:`munlockall` | Dummy [#fn14]_ | +--------------------------------+----------------+ .. [#fn14] The function returns a success value but doesn't implement the requred functionality. _POSIX_MEMLOCK_RANGE -------------------- +--------------------------------+----------------+ | API | Support | +================================+================+ | :c:func:`mlock` | Dummy [#fn15]_ | +--------------------------------+----------------+ | :c:func:`munlock` | Dummy [#fn15]_ | +--------------------------------+----------------+ .. [#fn15] The function returns a success value but doesn't implement the requred functionality. _POSIX_MONOTONIC_CLOCK ---------------------- No functions under this option. _POSIX_NO_TRUNC --------------- No functions under this option. _POSIX_REALTIME_SIGNALS ----------------------- Realtime Signals: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`sigqueue` | Yes | +--------------------------------+---------+ | :c:func:`sigtimedwait` | Yes | +--------------------------------+---------+ | :c:func:`sigwaitinfo` | Yes | +--------------------------------+---------+ _POSIX_SEMAPHORES ----------------- Semaphores: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`sem_clockwait` | Yes | +--------------------------------+---------+ | :c:func:`sem_close` | Yes | +--------------------------------+---------+ | :c:func:`sem_destroy` | Yes | +--------------------------------+---------+ | :c:func:`sem_getvalue` | Yes | +--------------------------------+---------+ | :c:func:`sem_init` | Yes | +--------------------------------+---------+ | :c:func:`sem_open` | Yes | +--------------------------------+---------+ | :c:func:`sem_post` | Yes | +--------------------------------+---------+ | :c:func:`sem_timedwait` | Yes | +--------------------------------+---------+ | :c:func:`sem_trywait` | Yes | +--------------------------------+---------+ | :c:func:`sem_unlink` | Yes | +--------------------------------+---------+ | :c:func:`sem_wait` | Yes | +--------------------------------+---------+ _POSIX_SHARED_MEMORY_OBJECTS ---------------------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`mmap` | Yes | +--------------------------------+---------+ | :c:func:`munmap` | Yes | +--------------------------------+---------+ | :c:func:`shm_open` | Yes | +--------------------------------+---------+ | shm_unling() | No | +--------------------------------+---------+ _POSIX_SYNCHRONIZED_IO ---------------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`fdatasync` | Yes | +--------------------------------+---------+ | :c:func:`fsync` | Yes | +--------------------------------+---------+ | :c:func:`msync` | Yes | +--------------------------------+---------+ _POSIX_THREAD_ATTR_STACKADDR ---------------------------- +---------------------------------------+---------+ | API | Support | +=======================================+=========+ | :c:func:`pthread_attr_getstackaddr` | Yes | +---------------------------------------+---------+ | :c:func:`pthread_attr_setstackaddr` | Yes | +---------------------------------------+---------+ _POSIX_THREAD_ATTR_STACKSIZE ---------------------------- +---------------------------------------+---------+ | API | Support | +=======================================+=========+ | :c:func:`pthread_attr_getstacksize` | Yes | +---------------------------------------+---------+ | :c:func:`pthread_attr_setstacksize` | Yes | +---------------------------------------+---------+ _POSIX_THREAD_CPUTIME --------------------- +-----------------------------------+---------+ | API | Support | +===================================+=========+ | CLOCK_THREAD_CPUTIME_ID | Yes | +-----------------------------------+---------+ | :c:func:`pthread_getcpuclockid` | Yes | +-----------------------------------+---------+ _POSIX_THREAD_PRIO_INHERIT -------------------------- +-----------------------------------------+---------+ | API | Support | +=========================================+=========+ | :c:func:`pthread_mutexattr_getprotocol` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_mutexattr_setprotocol` | Yes | +-----------------------------------------+---------+ _POSIX_THREAD_PRIO_PROTECT -------------------------- +-----------------------------------------------+---------+ | API | Support | +===============================================+=========+ | :c:func:`pthread_mutex_getprioceiling` | Yes | +-----------------------------------------------+---------+ | :c:func:`pthread_mutex_setprioceiling` | Yes | +-----------------------------------------------+---------+ | :c:func:`pthread_mutexattr_getprioceiling` | Yes | +-----------------------------------------------+---------+ | :c:func:`pthread_mutexattr_getprotocol` | Yes | +-----------------------------------------------+---------+ | :c:func:`pthread_mutexattr_setprioceiling` | Yes | +-----------------------------------------------+---------+ | :c:func:`pthread_mutexattr_setprotocol` | Yes | +-----------------------------------------------+---------+ _POSIX_THREAD_PRIORITY_SCHEDULING --------------------------------- +-----------------------------------------+---------+ | API | Support | +=========================================+=========+ | :c:func:`pthread_attr_getinheritsched` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_getschedpolicy` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_getscope` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_setinheritsched` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_setschedpolicy` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_attr_setscope` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_getschedparam` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_setschedparam` | Yes | +-----------------------------------------+---------+ | :c:func:`pthread_setschedprio` | Yes | +-----------------------------------------+---------+ _POSIX_THREAD_SPORADIC_SERVER ----------------------------- No functions under this option. _POSIX_TIMEOUTS --------------- +-------------------------------------------+---------+ | API | Support | +===========================================+=========+ | :c:func:`mq_timedreceive` | Yes | +-------------------------------------------+---------+ | :c:func:`mq_timedsend` | Yes | +-------------------------------------------+---------+ | :c:func:`pthread_mutex_timedlock` | Yes | +-------------------------------------------+---------+ | :c:func:`pthread_rwlock_timedrdlock` | Yes | +-------------------------------------------+---------+ | :c:func:`pthread_rwlock_timedwrlock` | Yes | +-------------------------------------------+---------+ | :c:func:`sem_timedwait` | Yes | +-------------------------------------------+---------+ | posix_trace_timedgetnext_event() [#fn16]_ | No | +-------------------------------------------+---------+ .. [#fn16] ``_POSIX_TRACE*`` are obsolete. _POSIX_TIMERS ------------- Depends on ``!CONFIG_DISABLE_POSIX_TIMERS`` Timers: +---------------------------------+---------+ | API | Support | +=================================+=========+ | :c:func:`clock_getres` | Yes | +---------------------------------+---------+ | :c:func:`clock_gettime` | Yes | +---------------------------------+---------+ | :c:func:`clock_settime` | Yes | +---------------------------------+---------+ | :c:func:`nanosleep` | Yes | +---------------------------------+---------+ | :c:func:`timer_create` | Yes | +---------------------------------+---------+ | :c:func:`timer_delete` | Yes | +---------------------------------+---------+ | :c:func:`timer_getoverrun` | Yes | +---------------------------------+---------+ | :c:func:`timer_gettime` | Yes | +---------------------------------+---------+ | :c:func:`timer_settime` | Yes | +---------------------------------+---------+ _POSIX_MAPPED_FILES ------------------- Memory Mapped Files: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`mmap` | Yes | +--------------------------------+---------+ | :c:func:`munmap` | Yes | +--------------------------------+---------+ _POSIX_MESSAGE_PASSING ---------------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`mq_close` | Yes | +--------------------------------+---------+ | :c:func:`mq_getattr` | Yes | +--------------------------------+---------+ | :c:func:`mq_notify` | Yes | +--------------------------------+---------+ | :c:func:`mq_open` | Yes | +--------------------------------+---------+ | :c:func:`mq_receive` | Yes | +--------------------------------+---------+ | :c:func:`mq_send` | Yes | +--------------------------------+---------+ | :c:func:`mq_setattr` | Yes | +--------------------------------+---------+ | :c:func:`mq_unlink` | Yes | +--------------------------------+---------+ _POSIX_ASYNCHRONOUS_IO ---------------------- Depends on ``CONFIG_FS_AIO``. Asynchronous Input and Output Functions: +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`aio_cancel` | Yes | +--------------------------------+---------+ | :c:func:`aio_error` | Yes | +--------------------------------+---------+ | :c:func:`aio_fsync` | Yes | +--------------------------------+---------+ | :c:func:`aio_read` | Yes | +--------------------------------+---------+ | :c:func:`aio_return` | Yes | +--------------------------------+---------+ | :c:func:`aio_suspend` | Yes | +--------------------------------+---------+ | :c:func:`aio_write` | Yes | +--------------------------------+---------+ | :c:func:`lio_listio` | Yes | +--------------------------------+---------+ _POSIX_BARRIERS --------------- +--------------------------------------------+---------+ | API | Support | +============================================+=========+ | :c:func:`pthread_barrier_destroy` | Yes | +--------------------------------------------+---------+ | :c:func:`pthread_barrier_init` | Yes | +--------------------------------------------+---------+ | :c:func:`pthread_barrier_wait` | Yes | +--------------------------------------------+---------+ | :c:func:`pthread_barrierattr_destroy` | Yes | +--------------------------------------------+---------+ | :c:func:`pthread_barrierattr_init` | Yes | +--------------------------------------------+---------+ | :c:func:`pthread_barrierattr_getpshared` | Yes | +--------------------------------------------+---------+ | :c:func:`pthread_barrierattr_setpshared` | Yes | +--------------------------------------------+---------+ | :c:func:`pthread_barrierattr_getpshared` | Yes | +--------------------------------------------+---------+ | :c:func:`pthread_barrierattr_setpshared` | Yes | +--------------------------------------------+---------+ _POSIX_CPUTIME -------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`clock_getcpuclockid` | Yes | +--------------------------------+---------+ _POSIX_MEMORY_PROTECTION ------------------------ +--------------------------------+----------------+ | API | Support | +================================+================+ | :c:func:`mprotect` | Dummy [#fn17]_ | +--------------------------------+----------------+ .. [#fn17] The function returns a success value but doesn't implement the requred functionality. _POSIX_PRIORITIZED_IO --------------------- No functions under this option. _POSIX_PRIORITY_SCHEDULING -------------------------- +-------------------------------------------+---------+ | API | Support | +===========================================+=========+ | :c:func:`sched_get_priority_max` | Yes | +-------------------------------------------+---------+ | :c:func:`sched_get_priority_min` | Yes | +-------------------------------------------+---------+ | :c:func:`sched_getparam` | Yes | +-------------------------------------------+---------+ | :c:func:`sched_getscheduler` | Yes | +-------------------------------------------+---------+ | :c:func:`sched_rr_get_interval` | Yes | +-------------------------------------------+---------+ | :c:func:`sched_setparam` | Yes | +-------------------------------------------+---------+ | :c:func:`sched_setscheduler` | Yes | +-------------------------------------------+---------+ | :c:func:`sched_yield` | Yes | +-------------------------------------------+---------+ | :c:func:`posix_spawnattr_getschedparam` | Yes | +-------------------------------------------+---------+ | :c:func:`posix_spawnattr_setschedparam` | Yes | +-------------------------------------------+---------+ | :c:func:`posix_spawnattr_getschedpolicy` | Yes | +-------------------------------------------+---------+ | :c:func:`posix_spawnattr_setschedpolicy` | Yes | +-------------------------------------------+---------+ _POSIX_RAW_SOCKETS ------------------ No functions under this option. _POSIX_SPAWN ------------ Depends on ``CONFIG_BUILD_KERNEL``. +---------------------------------------------+---------+ | API | Support | +=============================================+=========+ | :c:func:`posix_spawn` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawn_file_actions_addclose` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawn_file_actions_adddup2` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawn_file_actions_addopen` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawn_file_actions_destroy` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawn_file_actions_init` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_destroy` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_getflags` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_getpgroup` | No | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_getsigdefault` | No | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_getsigmask` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_init` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_setflags` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_setpgroup` | No | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_setsigdefault` | No | +---------------------------------------------+---------+ | :c:func:`posix_spawnattr_setsigmask` | Yes | +---------------------------------------------+---------+ | :c:func:`posix_spawnp` | Yes | +---------------------------------------------+---------+ _POSIX_SPIN_LOCKS ----------------- Depends on ``CONFIG_PTHREAD_SPINLOCKS``. +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`pthread_spin_destroy` | Yes | +--------------------------------+---------+ | :c:func:`pthread_spin_init` | Yes | +--------------------------------+---------+ | :c:func:`pthread_spin_lock` | Yes | +--------------------------------+---------+ | :c:func:`pthread_spin_trylock` | Yes | +--------------------------------+---------+ | :c:func:`pthread_spin_unlock` | Yes | +--------------------------------+---------+ _POSIX_SPORADIC_SERVER ---------------------- No functions under this option. _POSIX_THREAD_PROCESS_SHARED ---------------------------- +------------------------------------------+---------+ | API | Support | +==========================================+=========+ | :c:func:`pthread_condattr_getpshared` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_condattr_setpshared` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_mutexattr_getpshared` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_mutexattr_setpshared` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlockattr_getpshared` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlockattr_setpshared` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_barrierattr_getpshared` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_barrierattr_setpshared` | Yes | +------------------------------------------+---------+ _POSIX_ADVISORY_INFO -------------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | posix_fadvise() | No | +--------------------------------+---------+ | :c:func:`posix_fallocate` | Yes | +--------------------------------+---------+ | :c:func:`posix_memalign` | Yes | +--------------------------------+---------+ | posix_madvise() | Empty | +--------------------------------+---------+ _POSIX_SAVED_IDS ---------------- No functions under this option. _POSIX_VDISABLE --------------- No functions under this option. _POSIX2_CHAR_TERM ----------------- No utilities under this option. _POSIX2_FORT_DEV ---------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | fort77 | No | +--------------------------------+---------+ _POSIX2_FORT_RUN ---------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | asa | No | +--------------------------------+---------+ _POSIX2_LOCALEDEF ----------------- No utilities under this option. _POSIX2_PBS ----------- +--------------------------------+---------+ | API | Support | +================================+=========+ | qalter | No | +--------------------------------+---------+ | qdel | No | +--------------------------------+---------+ | qhold | No | +--------------------------------+---------+ | qmove | No | +--------------------------------+---------+ | qmsg | No | +--------------------------------+---------+ | qrerun | No | +--------------------------------+---------+ | qrls | No | +--------------------------------+---------+ | qselect | No | +--------------------------------+---------+ | qsig | No | +--------------------------------+---------+ | qstat | No | +--------------------------------+---------+ | qsub | No | +--------------------------------+---------+ _POSIX2_PBS_ACCOUNTING ---------------------- No utilities under this option. _POSIX2_PBS_CHECKPOINT ---------------------- No utilities under this option. _POSIX2_PBS_LOCATE ------------------ No utilities under this option. _POSIX2_PBS_MESSAGE ------------------- No utilities under this option. _POSIX2_PBS_TRACK ----------------- No utilities under this option. _POSIX2_UPE ----------- +--------------------------------+---------+ | API | Support | +================================+=========+ | nm | No | +--------------------------------+---------+ _XOPEN_CRYPT ------------ Depends on ``CONFIG_CRYPTO``; +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`crypt` | Yes | +--------------------------------+---------+ | encrypt() | No | +--------------------------------+---------+ | setkey() | No | +--------------------------------+---------+ _XOPEN_ENH_I18N --------------- No interfaces fall under this option. _XOPEN_LEGACY ------------- +--------------------------------+---------+ | API | Support | +================================+=========+ | :c:func:`bcmp` | Yes | +--------------------------------+---------+ | :c:func:`bcopy` | Yes | +--------------------------------+---------+ | :c:func:`bzero` | Yes | +--------------------------------+---------+ | ecvt() | No | +--------------------------------+---------+ | fcvt() | No | +--------------------------------+---------+ | ftime() | No | +--------------------------------+---------+ | gcvt() | No | +--------------------------------+---------+ | getwd() | No | +--------------------------------+---------+ | index() | No | +--------------------------------+---------+ | :c:func:`mktemp` | Yes | +--------------------------------+---------+ | :c:func:`rindex` | Yes | +--------------------------------+---------+ | :c:func:`utimes` | Yes | +--------------------------------+---------+ | :c:func:`wcswcs` | Yes | +--------------------------------+---------+ _XOPEN_STREAMS -------------- +---------------------------------+---------+ | API | Support | +=================================+=========+ | fattach() | No | +---------------------------------+---------+ | fdetach() | No | +---------------------------------+---------+ | getmsg() | No | +---------------------------------+---------+ | getpmsg() | No | +---------------------------------+---------+ | :c:func:`ioctl` | Yes | +---------------------------------+---------+ | isastream() | No | +---------------------------------+---------+ | putmsg() | No | +---------------------------------+---------+ | putpmsg() | No | +---------------------------------+---------+ POSIX_BARRIERS -------------- +----------------------------------------+---------+ | API | Support | +========================================+=========+ | :c:func:`pthread_barrier_destroy` | Yes | +----------------------------------------+---------+ | :c:func:`pthread_barrier_init` | Yes | +----------------------------------------+---------+ | :c:func:`pthread_barrier_wait` | Yes | +----------------------------------------+---------+ | :c:func:`pthread_barrierattr_destroy` | Yes | +----------------------------------------+---------+ | :c:func:`pthread_barrierattr_init` | Yes | +----------------------------------------+---------+ POSIX_RW_LOCKS -------------- Reader Writer Locks: +------------------------------------------+---------+ | API | Support | +==========================================+=========+ | :c:func:`pthread_rwlock_clockrdlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_clockwrlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_destroy` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_init` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_rdlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_timedrdlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_timedwrlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_tryrdlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_trywrlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_unlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlock_wrlock` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlockattr_destroy` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlockattr_init` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlockattr_getpshared` | Yes | +------------------------------------------+---------+ | :c:func:`pthread_rwlockattr_setpshared` | Yes | +------------------------------------------+---------+ _POSIX2_C_DEV ------------- +-----------------------------------+---------+ | API | Support | +===================================+=========+ | c99 | No | +-----------------------------------+---------+ | lex | No | +-----------------------------------+---------+ | yacc | No | +-----------------------------------+---------+ _POSIX2_SW_DEV -------------- +-----------------------------------+---------+ | API | Support | +===================================+=========+ | ar | No | +-----------------------------------+---------+ | make | No | +-----------------------------------+---------+ | strip | No | +-----------------------------------+---------+ | nm | No | +-----------------------------------+---------+ References ========== * IEEE Std 1003.13, 2003 - Standardized Application Environment Profile (AEP)—POSIX® Realtime and Embedded Application Support * `IEEE Std 1003.1, 2004 Subprofiling Option Groups `_ * `IEEE Std 1003.1, 2008 Subprofiling Option Groups `_ * `IEEE Std 1003.1, 2013 Subprofiling Option Groups `_ * `IEEE Std 1003.1, 2016 Subprofiling Option Groups `_ * `IEEE Std 1003.1, 2018 Subprofiling Option Groups `_ * `IEEE Std 1003.1, 2024 Subprofiling Option Groups `_