| .. _posix_option_groups: |
| |
| Subprofiling Option Groups |
| ########################## |
| |
| .. _posix_option_group_threads_base: |
| |
| POSIX_THREADS_BASE |
| ================== |
| |
| The basic assumption in this profile is that the system |
| consists of a single (implicit) process with multiple threads. Therefore, the |
| standard requires all basic thread services, except those related to |
| multiple processes. |
| |
| .. csv-table:: POSIX_THREADS_BASE |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_atfork(), |
| pthread_attr_destroy(),yes |
| pthread_attr_getdetachstate(),yes |
| pthread_attr_getschedparam(),yes |
| pthread_attr_init(),yes |
| pthread_attr_setdetachstate(),yes |
| pthread_attr_setschedparam(),yes |
| pthread_barrier_destroy(),yes |
| pthread_barrier_init(),yes |
| pthread_barrier_wait(),yes |
| pthread_barrierattr_destroy(),yes |
| pthread_barrierattr_getpshared(),yes |
| pthread_barrierattr_init(),yes |
| pthread_barrierattr_setpshared(),yes |
| pthread_cancel(),yes |
| pthread_cleanup_pop(), |
| pthread_cleanup_push(), |
| pthread_cond_broadcast(),yes |
| pthread_cond_destroy(),yes |
| pthread_cond_init(),yes |
| pthread_cond_signal(),yes |
| pthread_cond_timedwait(),yes |
| pthread_cond_wait(),yes |
| pthread_condattr_destroy(),yes |
| pthread_condattr_init(),yes |
| pthread_create(),yes |
| pthread_detach(),yes |
| pthread_equal(),yes |
| pthread_exit(),yes |
| pthread_getspecific(),yes |
| pthread_join(),yes |
| pthread_key_create(),yes |
| pthread_key_delete(),yes |
| pthread_kill(), |
| pthread_mutex_destroy(),yes |
| pthread_mutex_init(),yes |
| pthread_mutex_lock(),yes |
| pthread_mutex_trylock(),yes |
| pthread_mutex_unlock(),yes |
| pthread_mutexattr_destroy(),yes |
| pthread_mutexattr_init(),yes |
| pthread_once(),yes |
| pthread_self(),yes |
| pthread_setcancelstate(),yes |
| pthread_setcanceltype(), |
| pthread_setspecific(),yes |
| pthread_sigmask(), |
| pthread_testcancel(), |
| |
| .. _posix_option_group_xsi_thread_ext: |
| |
| XSI_THREAD_EXT |
| ============== |
| |
| The XSI_THREADS_EXT option group is required because it provides |
| functions to control a thread's stack. This is considered useful for any |
| real-time application. |
| |
| This table lists service support status in Zephyr: |
| |
| .. csv-table:: XSI_THREAD_EXT |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_attr_getguardsize(), |
| pthread_attr_getstack(),yes |
| pthread_attr_setguardsize(), |
| pthread_attr_setstack(),yes |
| pthread_getconcurrency(), |
| pthread_setconcurrency() |
| |
| .. _posix_option_group_c_lang_support: |
| |
| POSIX_C_LANG_SUPPORT |
| ==================== |
| |
| The POSIX_C_LANG_SUPPORT option group contains the general ISO C |
| Library. |
| |
| .. csv-table:: POSIX_C_LANG_SUPPORT |
| :header: API, Supported |
| :widths: 50,10 |
| |
| abs(),yes |
| asctime(), |
| asctime_r(), |
| atof(), |
| atoi(),yes |
| atol(), |
| atoll(), |
| bsearch(),yes |
| calloc(),yes |
| ctime(), |
| ctime_r(), |
| difftime(), |
| div(), |
| feclearexcept(), |
| fegetenv(), |
| fegetexceptflag(), |
| fegetround(), |
| feholdexcept(), |
| feraiseexcept(), |
| fesetenv(), |
| fesetexceptflag(), |
| fesetround(), |
| fetestexcept(), |
| feupdateenv(), |
| free(),yes |
| gmtime(),yes |
| gmtime_r(),yes |
| imaxabs(), |
| imaxdiv(), |
| isalnum(),yes |
| isalpha(),yes |
| isblank(), |
| iscntrl(),yes |
| isdigit(),yes |
| isgraph(),yes |
| islower(), |
| isprint(),yes |
| ispunct(), |
| isspace(),yes |
| isupper(),yes |
| isxdigit(),yes |
| labs(),yes |
| ldiv(), |
| llabs(),yes |
| lldiv(), |
| localeconv(), |
| localtime(),yes |
| localtime_r(), |
| malloc(),yes |
| memchr(),yes |
| memcmp(),yes |
| memcpy(),yes |
| memmove(),yes |
| memset(),yes |
| mktime(),yes |
| qsort(),yes |
| rand(),yes |
| rand_r(),yes |
| realloc(),yes |
| setlocale(), |
| snprintf(),yes |
| sprintf(),yes |
| srand(),yes |
| sscanf(), |
| strcat(),yes |
| strchr(),yes |
| strcmp(),yes |
| strcoll(), |
| strcpy(),yes |
| strcspn(),yes |
| strerror(),yes |
| strerror_r(),yes |
| strftime(), |
| strlen(),yes |
| strncat(),yes |
| strncmp(),yes |
| strncpy(),yes |
| strpbrk(), |
| strrchr(),yes |
| strspn(),yes |
| strstr(),yes |
| strtod(), |
| strtof(), |
| strtoimax(), |
| strtok(),yes |
| strtok_r(),yes |
| strtol(),yes |
| strtold(), |
| strtoll(),yes |
| strtoul(),yes |
| strtoull(),yes |
| strtoumax(), |
| strxfrm(), |
| time(),yes |
| tolower(),yes |
| toupper(),yes |
| tzname(), |
| tzset(), |
| va_arg(),yes |
| va_copy(),yes |
| va_end(),yes |
| va_start(),yes |
| vsnprintf(),yes |
| vsprintf(),yes |
| vsscanf(), |
| |
| .. _posix_option_group_single_process: |
| |
| POSIX_SINGLE_PROCESS |
| ==================== |
| |
| The POSIX_SINGLE_PROCESS option group contains services for single |
| process applications. |
| |
| .. csv-table:: POSIX_SINGLE_PROCESS |
| :header: API, Supported |
| :widths: 50,10 |
| |
| confstr(), |
| environ, |
| errno,yes |
| getenv(), |
| setenv(), |
| sysconf(), |
| uname(),yes |
| unsetenv() |
| |
| .. _posix_option_group_signals: |
| |
| POSIX_SIGNALS |
| ============= |
| |
| Signal services are a basic mechanism within POSIX-based systems and are |
| required for error and event handling. |
| |
| .. csv-table:: POSIX_SIGNALS |
| :header: API, Supported |
| :widths: 50,10 |
| |
| abort(),yes |
| alarm(), |
| kill(), |
| pause(), |
| raise(), |
| sigaction(), |
| sigaddset(),yes |
| sigdelset(),yes |
| sigemptyset(),yes |
| sigfillset(),yes |
| sigismember(),yes |
| signal(), |
| sigpending(), |
| sigprocmask(), |
| igsuspend(), |
| sigwait(), |
| strsignal(),yes |
| |
| .. _posix_option_group_device_io: |
| |
| POSIX_DEVICE_IO |
| =============== |
| |
| .. csv-table:: POSIX_DEVICE_IO |
| :header: API, Supported |
| :widths: 50,10 |
| |
| FD_CLR(),yes |
| FD_ISSET(),yes |
| FD_SET(),yes |
| FD_ZERO(),yes |
| clearerr(),yes |
| close(),yes |
| fclose(), |
| fdopen(), |
| feof(), |
| ferror(), |
| fflush(), |
| fgetc(), |
| fgets(), |
| fileno(), |
| fopen(), |
| fprintf(),yes |
| fputc(),yes |
| fputs(),yes |
| fread(), |
| freopen(), |
| fscanf(), |
| fwrite(),yes |
| getc(), |
| getchar(), |
| gets(), |
| open(),yes |
| perror(),yes |
| poll(),yes |
| printf(),yes |
| pread(), |
| pselect(), |
| putc(),yes |
| putchar(),yes |
| puts(),yes |
| pwrite(), |
| read(),yes |
| scanf(), |
| select(),yes |
| setbuf(), |
| setvbuf(), |
| stderr, |
| stdin, |
| stdout, |
| ungetc(), |
| vfprintf(),yes |
| vfscanf(), |
| vprintf(),yes |
| vscanf(), |
| write(),yes |
| |
| .. _posix_option_group_barriers: |
| |
| POSIX_BARRIERS |
| ============== |
| |
| .. csv-table:: POSIX_BARRIERS |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_barrier_destroy(),yes |
| pthread_barrier_init(),yes |
| pthread_barrier_wait(),yes |
| pthread_barrierattr_destroy(),yes |
| pthread_barrierattr_init(),yes |
| |
| .. _posix_option_group_clock_selection: |
| |
| POSIX_CLOCK_SELECTION |
| ===================== |
| |
| .. csv-table:: POSIX_CLOCK_SELECTION |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_condattr_getclock(),yes |
| pthread_condattr_setclock(),yes |
| clock_nanosleep(),yes |
| |
| .. _posix_option_group_semaphores: |
| |
| POSIX_SEMAPHORES |
| ================ |
| |
| .. csv-table:: POSIX_SEMAPHORES |
| :header: API, Supported |
| :widths: 50,10 |
| |
| sem_close(), |
| sem_destroy(),yes |
| sem_getvalue(),yes |
| sem_init(),yes |
| sem_open(), |
| sem_post(),yes |
| sem_trywait(),yes |
| sem_unlink(), |
| sem_wait(),yes |
| |
| .. _posix_option_group_spin_locks: |
| |
| POSIX_SPIN_LOCKS |
| ================ |
| |
| .. csv-table:: POSIX_SPIN_LOCKS |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_spin_destroy(),yes |
| pthread_spin_init(),yes |
| pthread_spin_lock(),yes |
| pthread_spin_trylock(),yes |
| pthread_spin_unlock(),yes |
| |
| .. _posix_option_group_timers: |
| |
| POSIX_TIMERS |
| ============ |
| |
| .. csv-table:: POSIX_TIMERS |
| :header: API, Supported |
| :widths: 50,10 |
| |
| clock_getres(), |
| clock_gettime(),yes |
| clock_settime(),yes |
| nanosleep(),yes |
| timer_create(),yes |
| timer_delete(),yes |
| timer_gettime(),yes |
| timer_getoverrun(),yes |
| timer_settime(),yes |
| |
| |
| .. _posix_options: |
| |
| Additional POSIX Options |
| ======================== |
| |
| .. _posix_option_message_passing: |
| |
| _POSIX_MESSAGE_PASSING |
| ++++++++++++++++++++++ |
| |
| .. csv-table:: _POSIX_MESSAGE_PASSING |
| :header: API, Supported |
| :widths: 50,10 |
| |
| mq_close(),yes |
| mq_getattr(),yes |
| mq_notify(), |
| mq_open(),yes |
| mq_receive(),yes |
| mq_send(),yes |
| mq_setattr(),yes |
| mq_unlink(),yes |
| |
| _POSIX_PRIORITY_SCHEDULING |
| ++++++++++++++++++++++++++ |
| |
| .. _posix_option_priority_scheduling: |
| |
| .. csv-table:: _POSIX_PRIORITY_SCHEDULING |
| :header: API, Supported |
| :widths: 50,10 |
| |
| sched_get_priority_max(),yes |
| sched_get_priority_min(),yes |
| sched_getparam(), |
| sched_getscheduler(), |
| sched_rr_get_interval(), |
| sched_setparam(), |
| sched_setscheduler(), |
| sched_yield(),yes |
| |
| .. _posix_option_reader_writer_locks: |
| |
| _POSIX_READER_WRITER_LOCKS |
| ++++++++++++++++++++++++++ |
| |
| .. csv-table:: _POSIX_READER_WRITER_LOCKS |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_rwlock_destroy(),yes |
| pthread_rwlock_init(),yes |
| pthread_rwlock_rdlock(),yes |
| pthread_rwlock_tryrdlock(),yes |
| pthread_rwlock_trywrlock(),yes |
| pthread_rwlock_unlock(),yes |
| pthread_rwlock_wrlock(),yes |
| pthread_rwlockattr_destroy(),yes |
| pthread_rwlockattr_getpshared(), |
| pthread_rwlockattr_init(),yes |
| pthread_rwlockattr_setpshared(), |
| |
| .. _posix_option_thread_attr_stackaddr: |
| |
| _POSIX_THREAD_ATTR_STACKADDR |
| ++++++++++++++++++++++++++++ |
| |
| .. csv-table:: _POSIX_THREAD_ATTR_STACKADDR |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_attr_getstackaddr(),yes |
| pthread_attr_setstackaddr(),yes |
| |
| .. _posix_option_thread_attr_stacksize: |
| |
| _POSIX_THREAD_ATTR_STACKSIZE |
| ++++++++++++++++++++++++++++ |
| |
| .. csv-table:: _POSIX_THREAD_ATTR_STACKSIZE |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_attr_getstacksize(),yes |
| pthread_attr_setstacksize(),yes |
| |
| .. _posix_option_thread_priority_scheduling: |
| |
| _POSIX_THREAD_PRIORITY_SCHEDULING |
| +++++++++++++++++++++++++++++++++ |
| |
| .. csv-table:: _POSIX_THREAD_PRIORITY_SCHEDULING |
| :header: API, Supported |
| :widths: 50,10 |
| |
| pthread_attr_getinheritsched(), |
| pthread_attr_getschedpolicy(),yes |
| pthread_attr_getscope(), |
| pthread_attr_setinheritsched(), |
| pthread_attr_setschedpolicy(),yes |
| pthread_attr_setscope(), |
| pthread_getschedparam(),yes |
| pthread_setschedparam(),yes |
| pthread_setschedprio(),yes |
| |
| .. _posix_option_timeouts: |
| |
| _POSIX_TIMEOUTS |
| +++++++++++++++ |
| |
| .. csv-table:: _POSIX_TIMEOUTS |
| :header: API, Supported |
| :widths: 50,10 |
| |
| mq_timedreceive(), |
| mq_timedsend(), |
| pthread_mutex_timedlock(),yes |
| pthread_rwlock_timedrdlock(),yes |
| pthread_rwlock_timedwrlock(),yes |
| sem_timedwait(),yes |
| posix_trace_timedgetnext_event(), |
| |
| .. _posix_option_xopen_streams: |
| |
| _XOPEN_STREAMS |
| ++++++++++++++ |
| |
| .. csv-table:: _XOPEN_STREAMS |
| :header: API, Supported |
| :widths: 50,10 |
| |
| fattach(), |
| fdetach(), |
| getmsg(), |
| getpmsg(), |
| ioctl(),yes |
| isastream(), |
| putmsg(), |
| putpmsg(), |