Subprofiling Option Groups
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.
API |
Supported |
---|---|
pthread_atfork() |
yes |
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() |
yes |
pthread_cleanup_push() |
yes |
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() |
yes |
pthread_setspecific() |
yes |
pthread_sigmask() |
yes |
pthread_testcancel() |
yes |
POSIX_THREADS_EXT
This table lists service support status in Zephyr:
API |
Supported |
---|---|
pthread_attr_getguardsize() |
yes |
pthread_attr_setguardsize() |
yes |
pthread_mutexattr_gettype() |
yes |
pthread_mutexattr_settype() |
yes |
XSI_THREADS_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:
API |
Supported |
---|---|
pthread_attr_getstack() |
yes |
pthread_attr_setstack() |
yes |
pthread_getconcurrency() |
yes |
pthread_setconcurrency() |
yes |
XSI_SYSTEM_LOGGING
API |
Supported |
---|---|
closelog() |
yes |
openlog() |
yes |
setlogmask() |
yes |
syslog() |
yes |
POSIX_C_LANG_JUMP
The POSIX_C_LANG_JUMP
Option Group is included in the ISO C standard.
Note
When using Newlib, Picolibc, or other C libraries conforming to the ISO C Standard, the
POSIX_C_LANG_JUMP
Option Group is considered supported.
API |
Supported |
---|---|
setjmp() |
yes |
longjmp() |
yes |
POSIX_C_LANG_MATH
The POSIX_C_LANG_MATH
Option Group is included in the ISO C standard.
Note
When using Newlib, Picolibc, or other C libraries conforming to the ISO C Standard, the
POSIX_C_LANG_MATH
Option Group is considered supported.
Please refer to Subprofiling Considerations for details on the POSIX_C_LANG_MATH
Option
Group.
POSIX_C_LANG_SUPPORT
The POSIX_C_LANG_SUPPORT option group contains the general ISO C Library.
Note
When using Newlib, Picolibc, or other C libraries conforming to the ISO C Standard, the entire
POSIX_C_LANG_SUPPORT
Option Group is considered supported.
Please refer to Subprofiling Considerations for details on the POSIX_C_LANG_SUPPORT
Option
Group.
For more information on developing Zephyr applications in the C programming language, please refer to details.
POSIX_C_LIB_EXT
API |
Supported |
---|---|
fnmatch() |
yes |
getopt() |
yes |
getsubopt() |
|
optarg |
yes |
opterr |
yes |
optind |
yes |
optopt |
yes |
stpcpy() |
|
stpncpy() |
|
strcasecmp() |
|
strdup() |
|
strfmon() |
|
strncasecmp() |
yes |
strndup() |
|
strnlen() |
yes |
POSIX_REALTIME_SIGNALS
API |
Supported |
---|---|
sigqueue() |
|
sigtimedwait() |
|
sigwaitinfo() |
POSIX_SIGNAL_JUMP
API |
Supported |
---|---|
siglongjmp() |
|
sigsetjmp() |
POSIX_SINGLE_PROCESS
The POSIX_SINGLE_PROCESS option group contains services for single process applications.
API |
Supported |
---|---|
confstr() |
yes |
environ |
yes |
errno |
yes |
getenv() |
yes |
setenv() |
yes |
sysconf() |
yes |
uname() |
yes |
unsetenv() |
yes |
POSIX_SIGNALS
Signal services are a basic mechanism within POSIX-based systems and are required for error and event handling.
API |
Supported |
---|---|
abort() |
yes |
alarm() |
|
kill() |
|
pause() |
|
raise() |
|
sigaction() |
|
sigaddset() |
yes |
sigdelset() |
yes |
sigemptyset() |
yes |
sigfillset() |
yes |
sigismember() |
yes |
signal() |
|
sigpending() |
|
sigprocmask() |
yes |
sigsuspend() |
|
sigwait() |
|
strsignal() |
yes |
POSIX_DEVICE_IO
API |
Supported |
---|---|
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_BARRIERS
API |
Supported |
---|---|
pthread_barrier_destroy() |
yes |
pthread_barrier_init() |
yes |
pthread_barrier_wait() |
yes |
pthread_barrierattr_destroy() |
yes |
pthread_barrierattr_init() |
yes |
POSIX_CLOCK_SELECTION
API |
Supported |
---|---|
pthread_condattr_getclock() |
yes |
pthread_condattr_setclock() |
yes |
clock_nanosleep() |
yes |
POSIX_FILE_SYSTEM
API |
Supported |
---|---|
access() |
|
chdir() |
|
closedir() |
yes |
creat() |
|
fchdir() |
|
fpathconf() |
|
fstat() |
yes |
fstatvfs() |
|
getcwd() |
|
link() |
|
mkdir() |
yes |
mkstemp() |
|
opendir() |
yes |
pathconf() |
|
readdir() |
yes |
remove() |
|
rename() |
yes |
rewinddir() |
|
rmdir() |
|
stat() |
yes |
statvfs() |
|
tmpfile() |
|
tmpnam() |
|
truncate() |
|
unlink() |
yes |
utime() |
POSIX_MAPPED_FILES
API |
Supported |
---|---|
mmap() |
yes |
msync() |
yes |
munmap() |
yes |
POSIX_NETWORKING
API |
Supported |
---|---|
accept() |
yes |
bind() |
yes |
connect() |
yes |
endhostent() |
yes |
endnetent() |
yes |
endprotoent() |
yes |
endservent() |
yes |
freeaddrinfo() |
yes |
gai_strerror() |
yes |
getaddrinfo() |
yes |
gethostent() |
yes |
gethostname() |
yes |
getnameinfo() |
yes |
getnetbyaddr() |
yes |
getnetbyname() |
yes |
getnetent() |
yes |
getpeername() |
yes |
getprotobyname() |
yes |
getprotobynumber() |
yes |
getprotoent() |
yes |
getservbyname() |
yes |
getservbyport() |
yes |
getservent() |
yes |
getsockname() |
yes |
getsockopt() |
yes |
htonl() |
yes |
htons() |
yes |
if_freenameindex() |
yes |
if_indextoname() |
yes |
if_nameindex() |
yes |
if_nametoindex() |
yes |
inet_addr() |
yes |
inet_ntoa() |
yes |
inet_ntop() |
yes |
inet_pton() |
yes |
listen() |
yes |
ntohl() |
yes |
ntohs() |
yes |
recv() |
yes |
recvfrom() |
yes |
recvmsg() |
yes |
send() |
yes |
sendmsg() |
yes |
sendto() |
yes |
sethostent() |
yes |
setnetent() |
yes |
setprotoent() |
yes |
setservent() |
yes |
setsockopt() |
yes |
shutdown() |
yes |
socket() |
yes |
sockatmark() |
yes (will fail with |
socketpair() |
yes |
POSIX_PIPE
API |
Supported |
---|---|
pipe() |
POSIX_SEMAPHORES
API |
Supported |
---|---|
sem_close() |
yes |
sem_destroy() |
yes |
sem_getvalue() |
yes |
sem_init() |
yes |
sem_open() |
yes |
sem_post() |
yes |
sem_trywait() |
yes |
sem_unlink() |
yes |
sem_wait() |
yes |
POSIX_SPIN_LOCKS
API |
Supported |
---|---|
pthread_spin_destroy() |
yes |
pthread_spin_init() |
yes |
pthread_spin_lock() |
yes |
pthread_spin_trylock() |
yes |
pthread_spin_unlock() |
yes |
POSIX_TIMERS
API |
Supported |
---|---|
clock_getres() |
yes |
clock_gettime() |
yes |
clock_settime() |
yes |
nanosleep() |
yes |
timer_create() |
yes |
timer_delete() |
yes |
timer_gettime() |
yes |
timer_getoverrun() |
yes |
timer_settime() |
yes |
POSIX_FD_MGMT
This table lists service support status in Zephyr for POSIX_FD_MGMT:
API |
Supported |
---|---|
dup() |
|
dup2() |
|
fcntl() |
|
fgetpos() |
|
fseek() |
|
fseeko() |
|
fsetpos() |
|
ftell() |
|
ftello() |
|
ftruncate() |
yes |
lseek() |
|
rewind() |
POSIX_FILE_LOCKING
This table lists service support status in Zephyr for POSIX_FD_MGMT:
API |
Supported |
---|---|
flockfile() |
|
ftrylockfile() |
|
funlockfile() |
|
getc_unlocked() |
|
getchar_unlocked() |
|
putc_unlocked() |
|
putchar_unlocked() |
POSIX_MEMORY_PROTECTION
API |
Supported |
---|---|
mprotect() |
yes † |
POSIX_MULTI_PROCESS
API |
Supported |
---|---|
_Exit() |
yes |
_exit() |
yes |
assert() |
yes |
atexit() |
|
clock() |
|
execl() |
|
execle() |
|
execlp() |
|
execv() |
|
execve() |
|
execvp() |
|
exit() |
yes |
fork() |
|
getpgrp() |
|
getpgid() |
|
getpid() |
yes † |
getppid() |
|
getsid() |
|
setsid() |
|
sleep() |
yes |
times() |
|
wait() |
|
waitid() |
|
waitpid() |
Additional POSIX Options
_POSIX_ASYNCHRONOUS_IO
Functions part of the _POSIX_ASYNCHRONOUS_IO
Option are not implemented in Zephyr but are
provided so that conformant applications can still link. These functions will fail, setting
errno
to ENOSYS
†.
API |
Supported |
---|---|
aio_cancel() |
yes † |
aio_error() |
yes † |
aio_fsync() |
yes † |
aio_read() |
yes † |
aio_return() |
yes † |
aio_suspend() |
yes † |
aio_write() |
yes † |
lio_listio() |
yes † |
_POSIX_CPUTIME
API |
Supported |
---|---|
CLOCK_PROCESS_CPUTIME_ID |
yes |
_POSIX_FSYNC
API |
Supported |
---|---|
fsync() |
yes |
_POSIX_IPV6
Internet Protocol Version 6 is supported.
For more information, please refer to Networking.
_POSIX_MEMLOCK
Zephyr’s Demand Paging API does not yet support
pinning or unpinning all virtual memory regions. The functions below are expected to fail and
set errno
to ENOSYS
†.
API |
Supported |
---|---|
mlockall() |
yes |
munlockall() |
yes |
_POSIX_MEMLOCK_RANGE
API |
Supported |
---|---|
mlock() |
yes |
munlock() |
yes |
_POSIX_MESSAGE_PASSING
API |
Supported |
---|---|
mq_close() |
yes |
mq_getattr() |
yes |
mq_notify() |
yes |
mq_open() |
yes |
mq_receive() |
yes |
mq_send() |
yes |
mq_setattr() |
yes |
mq_unlink() |
yes |
_POSIX_MONOTONIC_CLOCK
API |
Supported |
---|---|
CLOCK_MONOTONIC |
yes |
_POSIX_PRIORITY_SCHEDULING
API |
Supported |
---|---|
sched_get_priority_max() |
yes |
sched_get_priority_min() |
yes |
sched_getparam() |
yes |
sched_getscheduler() |
yes |
sched_rr_get_interval() |
yes (will fail with |
sched_setparam() |
yes (will fail with |
sched_setscheduler() |
yes (will fail with |
sched_yield() |
yes |
_POSIX_RAW_SOCKETS
Raw sockets are supported.
For more information, please refer to CONFIG_NET_SOCKETS_PACKET
.
_POSIX_READER_WRITER_LOCKS
API |
Supported |
---|---|
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() |
yes |
pthread_rwlockattr_init() |
yes |
pthread_rwlockattr_setpshared() |
yes |
_POSIX_SYNCHRONIZED_IO
API |
Supported |
---|---|
fdatasync() |
|
fsync() |
yes |
msync() |
_POSIX_THREAD_ATTR_STACKADDR
API |
Supported |
---|---|
pthread_attr_getstackaddr() |
yes |
pthread_attr_setstackaddr() |
yes |
_POSIX_THREAD_CPUTIME
API |
Supported |
---|---|
CLOCK_THREAD_CPUTIME_ID |
yes |
pthread_getcpuclockid() |
yes |
_POSIX_THREAD_ATTR_STACKSIZE
API |
Supported |
---|---|
pthread_attr_getstacksize() |
yes |
pthread_attr_setstacksize() |
yes |
_POSIX_THREAD_PRIORITY_SCHEDULING
API |
Supported |
---|---|
pthread_attr_getinheritsched() |
yes |
pthread_attr_getschedpolicy() |
yes |
pthread_attr_getscope() |
yes |
pthread_attr_setinheritsched() |
yes |
pthread_attr_setschedpolicy() |
yes |
pthread_attr_setscope() |
yes |
pthread_getschedparam() |
yes |
pthread_setschedparam() |
yes |
pthread_setschedprio() |
yes |
_POSIX_THREAD_PRIO_INHERIT
API |
Supported |
---|---|
pthread_mutexattr_getprotocol() |
yes |
pthread_mutexattr_setprotocol() |
yes |
_POSIX_THREAD_PRIO_PROTECT
API |
Supported |
---|---|
pthread_mutex_getprioceiling() |
|
pthread_mutex_setprioceiling() |
|
pthread_mutexattr_getprioceiling() |
|
pthread_mutexattr_getprotocol() |
yes |
pthread_mutexattr_setprioceiling() |
|
pthread_mutexattr_setprotocol() |
yes |
_POSIX_THREAD_SAFE_FUNCTIONS
API |
Supported |
---|---|
asctime_r() |
|
ctime_r() |
|
flockfile() |
|
ftrylockfile() |
|
funlockfile() |
|
getc_unlocked() |
|
getchar_unlocked() |
|
getgrgid_r() |
|
getgrnam_r() |
|
getpwnam_r() |
|
getpwuid_r() |
|
gmtime_r() |
yes |
localtime_r() |
|
putc_unlocked() |
|
putchar_unlocked() |
|
rand_r() |
yes |
readdir_r() |
|
strerror_r() |
yes |
strtok_r() |
yes |
_POSIX_TIMEOUTS
API |
Supported |
---|---|
mq_timedreceive() |
yes |
mq_timedsend() |
yes |
pthread_mutex_timedlock() |
yes |
pthread_rwlock_timedrdlock() |
yes |
pthread_rwlock_timedwrlock() |
yes |
sem_timedwait() |
yes |
posix_trace_timedgetnext_event() |
_XOPEN_STREAMS
With the exception of ioctl()
, functions in the _XOPEN_STREAMS
option group are not
implemented in Zephyr but are provided so that conformant applications can still link.
Unimplemented functions in this option group will fail, setting errno
to ENOSYS
†.
API |
Supported |
---|---|
fattach() |
yes † |
fdetach() |
yes † |
getmsg() |
yes † |
getpmsg() |
yes † |
ioctl() |
yes |
isastream() |
yes † |
putmsg() |
yes † |
putpmsg() |
yes † |