Feature Groups
The system may provide one or more of the following Feature Groups:
When an implementation claims that a feature is provided, all of its constituent parts shall be provided and shall comply with this specification.
For all Feature Groups, interfaces to all elements of the Feature Group shall exist. On implementations that do not support individual interfaces, each unsupported interface shall indicate an error, with errno set to [ENOSYS] unless otherwise specified.
If individual interfaces are supported, but the whole Feature Group is not supported, the interfaces will behave as defined in this specification.
Encryption
The Encryption Feature Group includes the following interfaces:These are marked CRYPT.
- crypt() encrypt() setkey()
Due to U.S. Government export restrictions on the decoding algorithm, implementations are restricted in making these functions available. All the functions in the Encryption Feature Group may therefore return [ENOSYS] or alternatively, encrypt() shall return [ENOSYS] for the decryption operation.
An implementation that claims conformance to this Feature Group shall set _XOPEN_CRYPT to a value other than -1. An implementation that does not claim conformance to this Feature Group shall set _XOPEN_CRYPT to -1.
Realtime
This document includes all the interfaces defined in the POSIX Realtime Extension.Where entire manual pages have been added, they are marked REALTIME. Where additional semantics have been added to existing manual pages, the new material is identified by use of the RT margin legend.
An implementation that claims conformance to this Feature Group shall set the macro _XOPEN_REALTIME to a value other than -1. An implementation that does not claim conformance shall set _XOPEN_REALTIME to -1.
The POSIX Realtime Extension defines the following symbolic constants and their meaning:
- _POSIX_ASYNCHRONOUS_IO
- Implementation supports the Asynchronous Input and Output option.
- _POSIX_FSYNC
- Implementation supports the File Synchronisation option. XSI-conformant systems always support the functionality associated with this symbol.
- _POSIX_MAPPED_FILES
- Implementation supports the Memory Mapped Files option. XSI-conformant systems always support the functionality associated with this symbol.
- _POSIX_MEMLOCK
- Implementation supports the Process Memory Locking option.
- _POSIX_MEMLOCK_RANGE
- Implementation supports the Range Memory Locking option.
- _POSIX_MEMORY_PROTECTION
- Implementation supports the Memory Protection option. XSI-conformant systems always support the functionality associated with this symbol.
- _POSIX_MESSAGE_PASSING
- Implementation supports the Message Passing option.
- _POSIX_PRIORITIZED_IO
- Implementation supports the Prioritized Input and Output option.
- _POSIX_PRIORITY_SCHEDULING
- Implementation supports the Process Scheduling option.
- _POSIX_REALTIME_SIGNALS
- Implementation supports the Realtime Signals Extension option.
- _POSIX_SEMAPHORES
- Implementation supports the Semaphores option.
- _POSIX_SHARED_MEMORY_OBJECTS
- Implementation supports the Shared Memory Objects option.
- _POSIX_SYNCHRONIZED_IO
- Implementation supports the Synchronised Input and Output option.
- _POSIX_TIMERS
- Implementation supports the Timers option.
If the symbol _XOPEN_REALTIME is defined to have a value other than -1, then the following symbolic constants will be defined to an unspecified value:
- _POSIX_ASYNCHRONOUS_IO _POSIX_MEMLOCK _POSIX_MEMLOCK_RANGE _POSIX_MESSAGE_PASSING _POSIX_PRIORITY_SCHEDULING _POSIX_REALTIME_SIGNALS _POSIX_SEMAPHORES _POSIX_SHARED_MEMORY_OBJECTS _POSIX_SYNCHRONIZED_IO _POSIX_TIMERS
Interfaces in the _XOPEN_REALTIME Feature Group are marked REALTIME.
The functionality associated with _POSIX_MAPPED_FILES, _POSIX_MEMORY_PROTECTION and _POSIX_FSYNC is always present on XSI-conformant systems.
Support of _POSIX_PRIORITIZED_IO is optional. If this functionality is supported, then _POSIX_PRIORITIZED_IO will be set to a value other than -1. Otherwise it will be undefined.
If _POSIX_PRIORITIZED_IO is supported, then asynchronous I/O operations performed by aio_read(), aio_write() and lio_listio() will be submitted at a priority equal to the scheduling priority of the process minus aiocbp->aio_reqprio. The implementation will also document for which files I/O prioritization is supported.
Realtime Threads
The Realtime Threads Feature Group includes the interfaces covered by the POSIX Threads compile-time symbolic constants _POSIX_THREAD_PRIO_INHERIT, _POSIX_THREAD_PRIO_PROTECT and _POSIX_THREAD_PRIORITY_SCHEDULING as defined in <unistd.h>. This includes the following interfaces:
- pthread_attr_getinheritsched() pthread_attr_getschedpolicy() pthread_attr_getscope() pthread_attr_setinheritsched() pthread_attr_setschedpolicy() pthread_attr_setscope() pthread_getschedparam() pthread_mutex_getprioceiling() pthread_mutex_setprioceiling() pthread_mutexattr_getprioceiling() pthread_mutexattr_getprotocol() pthread_mutexattr_setprioceiling() pthread_mutexattr_setprotocol() pthread_setschedparam()
Where applicable, pages are marked REALTIME THREADS, together with the RTT margin legend for the SYNOPSIS section.
An implementation that claims conformance to this Feature Group shall set _XOPEN_REALTIME_THREADS to a value other than -1. An implementation that does not claim conformance to this Feature Group shall set the value of _XOPEN_REALTIME_THREADS to -1.
If the symbol _XOPEN_REALTIME_THREADS is defined to have a value other than -1, then the symbols:
- _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_THREAD_PRIO_PROTECT _POSIX_THREAD_PRIO_INHERIT
will also be defined; otherwise these symbols will be undefined.
Legacy
The Legacy Feature Group includes the interfaces and headers which were mandatory in previous versions of this specification but are optional in this version of the specification.
These interfaces and headers are retained in this specification because of their widespread use. Application writers should not rely on the existence of these interfaces or headers in new applications, but should follow the migration path detailed in the APPLICATION USAGE sections of the relevant pages.
Various factors may have contributed to the decision to mark an interface or header LEGACY. In all cases, the specific reasons for the withdrawal of an interface or header are documented on the relevant pages.
Once an interface or header is marked LEGACY, no modifications will be made to the specifications of such interfaces or headers other than to the APPLICATION USAGE sections of the relevant pages.
The interfaces and headers which form this Feature Group are as follows:
Legacy Interfaces, Headers and External Variables advance() brk() chroot() compile() cuserid() gamma() getdtablesize() getpagesize() getpass() getw() putw() re_comp() re_exec() regcmp() regex() sbrk() sigstack() step() ttyslot() valloc() wait3() <regexp.h> <varargs.h> <re_comp.h> loc1 __loc1 loc2 locs An implementation that claims conformance to this Feature Group shall set the macro _XOPEN_LEGACY to a value other than -1. An implementation that does not claim conformance shall set _XOPEN_LEGACY to -1.