1.. _posix_aep:
2
3POSIX Application Environment Profiles (AEP)
4############################################
5
6Although inactive, `IEEE 1003.13-2003`_ defined a number of AEP that inspired the modern
7subprofiling options of `IEEE 1003.1-2017`_. The single-purpose realtime system profiles
8are listed below, for reference, in terms that agree with the current POSIX-1 standard. PSE54
9is not considered at this time.
10
11System Interfaces
12=================
13
14The required POSIX :ref:`System Interfaces<posix_system_interfaces_required>` are supported for
15each Application Environment Profile.
16
17..  figure:: si.svg
18    :align: center
19    :scale: 150%
20    :alt: Required System Interfaces
21
22    System Interfaces
23
24.. _posix_aep_pse51:
25
26Minimal Realtime System Profile (PSE51)
27=======================================
28
29The *Minimal Realtime System Profile* (PSE51) includes all of the
30:ref:`System Interfaces<posix_system_interfaces_required>` along with several additional features.
31
32..  figure:: aep-pse51.svg
33    :align: center
34    :scale: 150%
35    :alt: Minimal Realtime System Profile (PSE51)
36
37    Minimal Realtime System Profile (PSE51)
38
39.. Conforming implementations shall define _POSIX_AEP_REALTIME_MINIMAL to the value 200312L
40
41.. csv-table:: PSE51 System Interfaces
42   :header: Symbol, Support, Remarks
43   :widths: 50, 10, 50
44
45    _POSIX_AEP_REALTIME_MINIMAL, -1, :kconfig:option:`CONFIG_POSIX_AEP_REALTIME_MINIMAL`
46
47.. csv-table:: PSE51 Option Groups
48   :header: Symbol, Support, Remarks
49   :widths: 50, 10, 50
50
51    :ref:`POSIX_C_LANG_JUMP <posix_option_group_c_lang_jump>`, yes,
52    :ref:`POSIX_C_LANG_SUPPORT <posix_option_group_c_lang_support>`, yes,
53    :ref:`POSIX_DEVICE_IO <posix_option_group_device_io>`, yes, :kconfig:option:`CONFIG_POSIX_DEVICE_IO`
54    :ref:`POSIX_SIGNALS <posix_option_group_signals>`, yes, :kconfig:option:`CONFIG_POSIX_SIGNALS` :ref:`†<posix_undefined_behaviour>`
55    :ref:`POSIX_SINGLE_PROCESS <posix_option_group_single_process>`, yes, :kconfig:option:`CONFIG_POSIX_SINGLE_PROCESS`
56    :ref:`XSI_THREADS_EXT <posix_option_group_xsi_threads_ext>`, yes, :kconfig:option:`CONFIG_XSI_THREADS_EXT`
57
58.. csv-table:: PSE51 Option Requirements
59   :header: Symbol, Support, Remarks
60   :widths: 50, 10, 50
61
62    :ref:`_POSIX_FSYNC <posix_option_fsync>`, 200809L, :kconfig:option:`CONFIG_POSIX_FSYNC`
63    :ref:`_POSIX_MEMLOCK <posix_option_memlock>`, 200809L, :kconfig:option:`CONFIG_POSIX_MEMLOCK` :ref:`†<posix_undefined_behaviour>`
64    :ref:`_POSIX_MEMLOCK_RANGE <posix_option_memlock_range>`, 200809L, :kconfig:option:`CONFIG_POSIX_MEMLOCK_RANGE`
65    :ref:`_POSIX_MONOTONIC_CLOCK <posix_option_monotonic_clock>`, 200809L, :kconfig:option:`CONFIG_POSIX_MONOTONIC_CLOCK`
66    :ref:`_POSIX_SHARED_MEMORY_OBJECTS <posix_shared_memory_objects>`, 200809L, :kconfig:option:`CONFIG_POSIX_SHARED_MEMORY_OBJECTS`
67    :ref:`_POSIX_SYNCHRONIZED_IO <posix_option_synchronized_io>`, 200809L, :kconfig:option:`CONFIG_POSIX_SYNCHRONIZED_IO`
68    :ref:`_POSIX_THREAD_ATTR_STACKADDR<posix_option_thread_attr_stackaddr>`, 200809L, :kconfig:option:`CONFIG_POSIX_THREAD_ATTR_STACKADDR`
69    :ref:`_POSIX_THREAD_ATTR_STACKSIZE<posix_option_thread_attr_stacksize>`, 200809L, :kconfig:option:`CONFIG_POSIX_THREAD_ATTR_STACKSIZE`
70    :ref:`_POSIX_THREAD_CPUTIME <posix_option_thread_cputime>`, 200809L, :kconfig:option:`CONFIG_POSIX_CPUTIME`
71    :ref:`_POSIX_THREAD_PRIO_INHERIT <posix_option_thread_prio_inherit>`, 200809L, :kconfig:option:`CONFIG_POSIX_THREAD_PRIO_INHERIT`
72    :ref:`_POSIX_THREAD_PRIO_PROTECT <posix_option_thread_prio_protect>`, 200809L, :kconfig:option:`CONFIG_POSIX_THREAD_PRIO_PROTECT`
73    :ref:`_POSIX_THREAD_PRIORITY_SCHEDULING <posix_option_thread_priority_scheduling>`, 200809L, :kconfig:option:`CONFIG_POSIX_THREAD_PRIORITY_SCHEDULING`
74    _POSIX_THREAD_SPORADIC_SERVER, -1,
75
76.. _posix_aep_pse52:
77
78Realtime Controller System Profile (PSE52)
79==========================================
80
81The *Realtime Controller System Profile* (PSE52) includes all features from PSE51 and the
82:ref:`System Interfaces<posix_system_interfaces_required>`.
83
84..  figure:: aep-pse52.svg
85    :align: center
86    :scale: 150%
87    :alt: Realtime Controller System Profile (PSE52)
88
89    Realtime Controller System Profile (PSE52)
90
91.. Conforming implementations shall define _POSIX_AEP_REALTIME_CONTROLLER to the value 200312L
92
93.. csv-table:: PSE52 System Interfaces
94   :header: Symbol, Support, Remarks
95   :widths: 50, 10, 50
96
97    _POSIX_AEP_REALTIME_CONTROLLER, -1, :kconfig:option:`CONFIG_POSIX_AEP_REALTIME_CONTROLLER`
98
99.. csv-table:: PSE52 Option Groups
100   :header: Symbol, Support, Remarks
101   :widths: 50, 10, 50
102
103    :ref:`POSIX_C_LANG_MATH <posix_option_group_c_lang_math>`, yes,
104    :ref:`POSIX_FD_MGMT <posix_option_group_fd_mgmt>`,, :kconfig:option:`CONFIG_POSIX_FD_MGMT`
105    :ref:`POSIX_FILE_SYSTEM <posix_option_group_file_system>`,, :kconfig:option:`CONFIG_POSIX_FILE_SYSTEM`
106
107.. csv-table:: PSE52 Option Requirements
108   :header: Symbol, Support, Remarks
109   :widths: 50, 10, 50
110
111    :ref:`_POSIX_MESSAGE_PASSING <posix_option_message_passing>`, 200809L, :kconfig:option:`CONFIG_POSIX_MESSAGE_PASSING`
112    _POSIX_TRACE, -1,
113    _POSIX_TRACE_EVENT_FILTER, -1,
114    _POSIX_TRACE_LOG, -1,
115
116.. _posix_aep_pse53:
117
118Dedicated Realtime System Profile (PSE53)
119=========================================
120
121The *Dedicated Realtime System Profile* (PSE53) includes all features from PSE52, PSE51, and the
122:ref:`System Interfaces<posix_system_interfaces_required>`.
123
124..  figure:: aep-pse53.svg
125    :align: center
126    :scale: 150%
127    :alt: Dedicated Realtime System Profile (PSE53)
128
129    Dedicated Realtime System Profile (PSE53)
130
131.. Conforming implementations shall define _POSIX_AEP_REALTIME_DEDICATED to the value 200312L
132
133.. csv-table:: PSE53 System Interfaces
134   :header: Symbol, Support, Remarks
135   :widths: 50, 10, 50
136
137    _POSIX_AEP_REALTIME_DEDICATED, -1, :kconfig:option:`CONFIG_POSIX_AEP_REALTIME_DEDICATED`
138
139.. csv-table:: PSE53 Option Groups
140   :header: Symbol, Support, Remarks
141   :widths: 50, 10, 50
142
143    :ref:`POSIX_MULTI_PROCESS<posix_option_group_multi_process>`,, :kconfig:option:`CONFIG_POSIX_MULTI_PROCESS`:ref:`†<posix_undefined_behaviour>`
144    :ref:`POSIX_NETWORKING <posix_option_group_networking>`, yes, :kconfig:option:`CONFIG_POSIX_NETWORKING`
145    :ref:`POSIX_PIPE <posix_option_group_pipe>`,,
146    :ref:`POSIX_SIGNAL_JUMP <posix_option_group_signal_jump>`,,
147
148.. csv-table:: PSE53 Option Requirements
149   :header: Symbol, Support, Remarks
150   :widths: 50, 10, 50
151
152    :ref:`_POSIX_CPUTIME <posix_option_cputime>`, 200809L, :kconfig:option:`CONFIG_POSIX_CPUTIME`
153    _POSIX_PRIORITIZED_IO, -1,
154    :ref:`_POSIX_PRIORITY_SCHEDULING <posix_option_priority_scheduling>`, -1,
155    :ref:`_POSIX_RAW_SOCKETS <posix_option_raw_sockets>`, 200809L, :kconfig:option:`CONFIG_POSIX_RAW_SOCKETS`
156    _POSIX_SPAWN, -1, :ref:`†<posix_undefined_behaviour>`
157    _POSIX_SPORADIC_SERVER, -1, :ref:`†<posix_undefined_behaviour>`
158
159.. _IEEE 1003.1-2017: https://standards.ieee.org/ieee/1003.1/7101/
160.. _IEEE 1003.13-2003: https://standards.ieee.org/ieee/1003.13/3322/
161