Line data Source code
1 0 : /*
2 : * Copyright (c) 2024 BayLibre SAS
3 : * Copyright (c) 2024 Tenstorrent AI ULC
4 : *
5 : * SPDX-License-Identifier: Apache-2.0
6 : */
7 :
8 : #ifndef INCLUDE_ZEPHYR_POSIX_POSIX_FEATURES_H_
9 : #define INCLUDE_ZEPHYR_POSIX_POSIX_FEATURES_H_
10 :
11 : #include <zephyr/autoconf.h> /* CONFIG_* */
12 : #include <zephyr/sys/util_macro.h> /* COND_CODE_1() */
13 :
14 : /*
15 : * POSIX Application Environment Profiles (AEP - IEEE Std 1003.13-2003)
16 : */
17 :
18 : #ifdef CONFIG_POSIX_AEP_REALTIME_MINIMAL
19 : #define _POSIX_AEP_REALTIME_MINIMAL 200312L
20 : #endif
21 :
22 : #ifdef CONFIG_POSIX_AEP_REALTIME_CONTROLLER
23 : #define _POSIX_AEP_REALTIME_CONTROLLER 200312L
24 : #endif
25 :
26 : #ifdef CONFIG_POSIX_AEP_REALTIME_DEDICATED
27 : #define _POSIX_AEP_REALTIME_DEDICATED 200312L
28 : #endif
29 :
30 : /*
31 : * Subprofiling Considerations
32 : */
33 : #define _POSIX_SUBPROFILE 1
34 :
35 : /*
36 : * POSIX System Interfaces
37 : */
38 :
39 : #define _POSIX_VERSION 200809L
40 :
41 : #define _POSIX_CHOWN_RESTRICTED (0)
42 : #define _POSIX_NO_TRUNC (0)
43 : #define _POSIX_VDISABLE ('\0')
44 :
45 : /* #define _POSIX_ADVISORY_INFO (-1L) */
46 :
47 : #ifdef CONFIG_POSIX_ASYNCHRONOUS_IO
48 : #define _POSIX_ASYNCHRONOUS_IO _POSIX_VERSION
49 : #endif
50 :
51 : #ifdef CONFIG_POSIX_BARRIERS
52 : #define _POSIX_BARRIERS _POSIX_VERSION
53 : #endif
54 :
55 : #ifdef CONFIG_POSIX_CLOCK_SELECTION
56 : #define _POSIX_CLOCK_SELECTION _POSIX_VERSION
57 : #endif
58 :
59 : #ifdef CONFIG_POSIX_CPUTIME
60 : #define _POSIX_CPUTIME _POSIX_VERSION
61 : #endif
62 :
63 : #ifdef CONFIG_POSIX_FSYNC
64 : #define _POSIX_FSYNC _POSIX_VERSION
65 : #endif
66 :
67 : #ifdef CONFIG_NET_IPV6
68 : #define _POSIX_IPV6 _POSIX_VERSION
69 : #endif
70 :
71 : /* #define _POSIX_JOB_CONTROL (-1L) */
72 :
73 : #ifdef CONFIG_POSIX_MAPPED_FILES
74 : #define _POSIX_MAPPED_FILES _POSIX_VERSION
75 : #endif
76 :
77 : #ifdef CONFIG_POSIX_MEMLOCK
78 : #define _POSIX_MEMLOCK _POSIX_VERSION
79 : #endif
80 :
81 : #ifdef CONFIG_POSIX_MEMLOCK_RANGE
82 : #define _POSIX_MEMLOCK_RANGE _POSIX_VERSION
83 : #endif
84 :
85 : #ifdef CONFIG_POSIX_MEMORY_PROTECTION
86 : #define _POSIX_MEMORY_PROTECTION _POSIX_VERSION
87 : #endif
88 :
89 : #ifdef CONFIG_POSIX_MESSAGE_PASSING
90 : #define _POSIX_MESSAGE_PASSING _POSIX_VERSION
91 : #endif
92 :
93 : #ifdef CONFIG_POSIX_MONOTONIC_CLOCK
94 : #define _POSIX_MONOTONIC_CLOCK _POSIX_VERSION
95 : #endif
96 :
97 : /* #define _POSIX_PRIORITIZED_IO (-1L) */
98 :
99 : #ifdef CONFIG_POSIX_PRIORITY_SCHEDULING
100 : #define _POSIX_PRIORITY_SCHEDULING _POSIX_VERSION
101 : #endif
102 :
103 : #ifdef CONFIG_NET_SOCKETS_PACKET
104 : #define _POSIX_RAW_SOCKETS _POSIX_VERSION
105 : #endif
106 :
107 : #ifdef CONFIG_POSIX_READER_WRITER_LOCKS
108 : #define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION
109 : #endif
110 :
111 : /* #define _POSIX_REALTIME_SIGNALS (-1L) */
112 : /* #define _POSIX_REGEXP (-1L) */
113 : /* #define _POSIX_SAVED_IDS (-1L) */
114 :
115 : #ifdef CONFIG_POSIX_SEMAPHORES
116 : #define _POSIX_SEMAPHORES _POSIX_VERSION
117 : #endif
118 :
119 : #ifdef CONFIG_POSIX_SHARED_MEMORY_OBJECTS
120 : #define _POSIX_SHARED_MEMORY_OBJECTS _POSIX_VERSION
121 : #endif
122 :
123 : /* #define _POSIX_SHELL (-1L) */
124 : /* #define _POSIX_SPAWN (-1L) */
125 :
126 : #ifdef CONFIG_POSIX_SPIN_LOCKS
127 : #define _POSIX_SPIN_LOCKS _POSIX_VERSION
128 : #endif
129 :
130 : /* #define _POSIX_SPORADIC_SERVER (-1L) */
131 :
132 : #ifdef CONFIG_POSIX_SYNCHRONIZED_IO
133 : #define _POSIX_SYNCHRONIZED_IO _POSIX_VERSION
134 : #endif
135 :
136 : #ifdef CONFIG_POSIX_THREAD_ATTR_STACKADDR
137 : #define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION
138 : #endif
139 :
140 : #ifdef CONFIG_POSIX_THREAD_ATTR_STACKSIZE
141 : #define _POSIX_THREAD_ATTR_STACKSIZE _POSIX_VERSION
142 : #endif
143 :
144 : #ifdef CONFIG_POSIX_THREAD_CPUTIME
145 : #define _POSIX_THREAD_CPUTIME _POSIX_VERSION
146 : #endif
147 :
148 : #ifdef CONFIG_POSIX_THREAD_PRIO_INHERIT
149 : #define _POSIX_THREAD_PRIO_INHERIT _POSIX_VERSION
150 : #endif
151 :
152 : #ifdef CONFIG_POSIX_THREAD_PRIO_PROTECT
153 : #define _POSIX_THREAD_PRIO_PROTECT _POSIX_VERSION
154 : #endif
155 :
156 : #ifdef CONFIG_POSIX_THREAD_PRIORITY_SCHEDULING
157 : #define _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_VERSION
158 : #endif
159 :
160 : /* #define _POSIX_THREAD_PROCESS_SHARED (-1L) */
161 : /* #define _POSIX_THREAD_ROBUST_PRIO_INHERIT (-1L) */
162 : /* #define _POSIX_THREAD_ROBUST_PRIO_PROTECT (-1L) */
163 :
164 : #ifdef CONFIG_POSIX_THREAD_SAFE_FUNCTIONS
165 : #define _POSIX_THREAD_SAFE_FUNCTIONS _POSIX_VERSION
166 : #endif
167 :
168 : /* #define _POSIX_THREAD_SPORADIC_SERVER (-1L) */
169 :
170 : #ifdef CONFIG_POSIX_THREADS
171 : #ifndef _POSIX_THREADS
172 : #define _POSIX_THREADS _POSIX_VERSION
173 : #endif
174 : #endif
175 :
176 : #ifdef CONFIG_POSIX_TIMEOUTS
177 : #define _POSIX_TIMEOUTS _POSIX_VERSION
178 : #endif
179 :
180 : #ifdef CONFIG_POSIX_TIMERS
181 : #define _POSIX_TIMERS _POSIX_VERSION
182 : #endif
183 :
184 : /* #define _POSIX_TRACE (-1L) */
185 : /* #define _POSIX_TRACE_EVENT_FILTER (-1L) */
186 : /* #define _POSIX_TRACE_INHERIT (-1L) */
187 : /* #define _POSIX_TRACE_LOG (-1L) */
188 : /* #define _POSIX_TYPED_MEMORY_OBJECTS (-1L) */
189 :
190 : /*
191 : * POSIX v6 Options
192 : */
193 : /* #define _POSIX_V6_ILP32_OFF32 (-1L) */
194 : /* #define _POSIX_V6_ILP32_OFFBIG (-1L) */
195 : /* #define _POSIX_V6_LP64_OFF64 (-1L) */
196 : /* #define _POSIX_V6_LPBIG_OFFBIG (-1L) */
197 :
198 : /*
199 : * POSIX v7 Options
200 : */
201 : /* #define _POSIX_V7_ILP32_OFF32 (-1L) */
202 : /* #define _POSIX_V7_ILP32_OFFBIG (-1L) */
203 : /* #define _POSIX_V7_LP64_OFF64 (-1L) */
204 : /* #define _POSIX_V7_LPBIG_OFFBIG (-1L) */
205 :
206 : /*
207 : * POSIX2 Options
208 : */
209 : /* #define _POSIX2_VERSION (-1) */
210 : #define _POSIX2_C_BIND _POSIX_VERSION
211 : /* #define _POSIX2_C_DEV (-1) */
212 : /* #define _POSIX2_CHAR_TERM (-1L) */
213 : /* #define _POSIX2_FORT_DEV (-1L) */
214 : /* #define _POSIX2_FORT_RUN (-1L) */
215 : /* #define _POSIX2_LOCALEDEF (-1L) */
216 : /* #define _POSIX2_PBS (-1L) */
217 : /* #define _POSIX2_PBS_ACCOUNTING (-1L) */
218 : /* #define _POSIX2_PBS_CHECKPOINT (-1L) */
219 : /* #define _POSIX2_PBS_LOCATE (-1L) */
220 : /* #define _POSIX2_PBS_MESSAGE (-1L) */
221 : /* #define _POSIX2_PBS_TRACK (-1L) */
222 : /* #define _POSIX2_SW_DEV (-1L) */
223 : /* #define _POSIX2_UPE (-1L) */
224 :
225 : /*
226 : * X/Open System Interfaces
227 : */
228 : #define _XOPEN_VERSION 700
229 : /* #define _XOPEN_CRYPT (-1L) */
230 : /* #define _XOPEN_ENH_I18N (-1L) */
231 : #if defined(CONFIG_XSI_REALTIME) || \
232 : (defined(CONFIG_POSIX_FSYNC) && defined(CONFIG_POSIX_MEMLOCK) && \
233 : defined(CONFIG_POSIX_MEMLOCK_RANGE) && defined(CONFIG_POSIX_MESSAGE_PASSING) && \
234 : defined(CONFIG_POSIX_PRIORITY_SCHEDULING) && \
235 : defined(CONFIG_POSIX_SHARED_MEMORY_OBJECTS) && defined(CONFIG_POSIX_SYNCHRONIZED_IO))
236 : #define _XOPEN_REALTIME _XOPEN_VERSION
237 : #endif
238 : /* #define _XOPEN_REALTIME_THREADS (-1L) */
239 : /* #define _XOPEN_SHM (-1L) */
240 :
241 : #ifdef CONFIG_XOPEN_STREAMS
242 : #define _XOPEN_STREAMS _XOPEN_VERSION
243 : #endif
244 :
245 : /* #define _XOPEN_UNIX (-1L) */
246 : /* #define _XOPEN_UUCP (-1L) */
247 :
248 : #endif /* INCLUDE_ZEPHYR_POSIX_POSIX_FEATURES_H_ */
|