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_FSYNC
56 : #define _POSIX_FSYNC _POSIX_VERSION
57 : #endif
58 :
59 : #ifdef CONFIG_NET_IPV6
60 : #define _POSIX_IPV6 _POSIX_VERSION
61 : #endif
62 :
63 : /* #define _POSIX_JOB_CONTROL (-1L) */
64 :
65 : #ifdef CONFIG_POSIX_MAPPED_FILES
66 : #define _POSIX_MAPPED_FILES _POSIX_VERSION
67 : #endif
68 :
69 : #ifdef CONFIG_POSIX_MEMLOCK
70 : #define _POSIX_MEMLOCK _POSIX_VERSION
71 : #endif
72 :
73 : #ifdef CONFIG_POSIX_MEMLOCK_RANGE
74 : #define _POSIX_MEMLOCK_RANGE _POSIX_VERSION
75 : #endif
76 :
77 : #ifdef CONFIG_POSIX_MEMORY_PROTECTION
78 : #define _POSIX_MEMORY_PROTECTION _POSIX_VERSION
79 : #endif
80 :
81 : #ifdef CONFIG_POSIX_MESSAGE_PASSING
82 : #define _POSIX_MESSAGE_PASSING _POSIX_VERSION
83 : #endif
84 :
85 : /* #define _POSIX_PRIORITIZED_IO (-1L) */
86 :
87 : #ifdef CONFIG_POSIX_PRIORITY_SCHEDULING
88 : #define _POSIX_PRIORITY_SCHEDULING _POSIX_VERSION
89 : #endif
90 :
91 : #ifdef CONFIG_NET_SOCKETS_PACKET
92 : #define _POSIX_RAW_SOCKETS _POSIX_VERSION
93 : #endif
94 :
95 : #ifdef CONFIG_POSIX_RW_LOCKS
96 : #define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION
97 : #endif
98 :
99 : /* #define _POSIX_REGEXP (-1L) */
100 : /* #define _POSIX_SAVED_IDS (-1L) */
101 :
102 : #ifdef CONFIG_POSIX_SEMAPHORES
103 : #define _POSIX_SEMAPHORES _POSIX_VERSION
104 : #endif
105 :
106 : #ifdef CONFIG_POSIX_SHARED_MEMORY_OBJECTS
107 : #define _POSIX_SHARED_MEMORY_OBJECTS _POSIX_VERSION
108 : #endif
109 :
110 : /* #define _POSIX_SHELL (-1L) */
111 : /* #define _POSIX_SPAWN (-1L) */
112 :
113 : #ifdef CONFIG_POSIX_SPIN_LOCKS
114 : #define _POSIX_SPIN_LOCKS _POSIX_VERSION
115 : #endif
116 :
117 : /* #define _POSIX_SPORADIC_SERVER (-1L) */
118 :
119 : #ifdef CONFIG_POSIX_SYNCHRONIZED_IO
120 : #define _POSIX_SYNCHRONIZED_IO _POSIX_VERSION
121 : #endif
122 :
123 : #ifdef CONFIG_POSIX_THREAD_ATTR_STACKADDR
124 : #define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION
125 : #endif
126 :
127 : #ifdef CONFIG_POSIX_THREAD_ATTR_STACKSIZE
128 : #define _POSIX_THREAD_ATTR_STACKSIZE _POSIX_VERSION
129 : #endif
130 :
131 : #ifdef CONFIG_POSIX_THREAD_CPUTIME
132 : #define _POSIX_THREAD_CPUTIME _POSIX_VERSION
133 : #endif
134 :
135 : #ifdef CONFIG_POSIX_THREAD_PRIO_INHERIT
136 : #define _POSIX_THREAD_PRIO_INHERIT _POSIX_VERSION
137 : #endif
138 :
139 : #ifdef CONFIG_POSIX_THREAD_PRIO_PROTECT
140 : #define _POSIX_THREAD_PRIO_PROTECT _POSIX_VERSION
141 : #endif
142 :
143 : #ifdef CONFIG_POSIX_THREAD_PRIORITY_SCHEDULING
144 : #define _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_VERSION
145 : #endif
146 :
147 : /* #define _POSIX_THREAD_PROCESS_SHARED (-1L) */
148 : /* #define _POSIX_THREAD_ROBUST_PRIO_INHERIT (-1L) */
149 : /* #define _POSIX_THREAD_ROBUST_PRIO_PROTECT (-1L) */
150 :
151 : /* #define _POSIX_THREAD_SPORADIC_SERVER (-1L) */
152 :
153 : #ifdef CONFIG_POSIX_THREADS
154 : #ifndef _POSIX_THREADS
155 : #define _POSIX_THREADS _POSIX_VERSION
156 : #endif
157 : #endif
158 :
159 : #ifdef CONFIG_POSIX_TIMEOUTS
160 : #define _POSIX_TIMEOUTS _POSIX_VERSION
161 : #endif
162 :
163 : /* #define _POSIX_TRACE (-1L) */
164 : /* #define _POSIX_TRACE_EVENT_FILTER (-1L) */
165 : /* #define _POSIX_TRACE_INHERIT (-1L) */
166 : /* #define _POSIX_TRACE_LOG (-1L) */
167 : /* #define _POSIX_TYPED_MEMORY_OBJECTS (-1L) */
168 :
169 : /*
170 : * POSIX v6 Options
171 : */
172 : /* #define _POSIX_V6_ILP32_OFF32 (-1L) */
173 : /* #define _POSIX_V6_ILP32_OFFBIG (-1L) */
174 : /* #define _POSIX_V6_LP64_OFF64 (-1L) */
175 : /* #define _POSIX_V6_LPBIG_OFFBIG (-1L) */
176 :
177 : /*
178 : * POSIX v7 Options
179 : */
180 : /* #define _POSIX_V7_ILP32_OFF32 (-1L) */
181 : /* #define _POSIX_V7_ILP32_OFFBIG (-1L) */
182 : /* #define _POSIX_V7_LP64_OFF64 (-1L) */
183 : /* #define _POSIX_V7_LPBIG_OFFBIG (-1L) */
184 :
185 : /*
186 : * POSIX2 Options
187 : */
188 : /* #define _POSIX2_VERSION (-1) */
189 : #define _POSIX2_C_BIND _POSIX_VERSION
190 : /* #define _POSIX2_C_DEV (-1) */
191 : /* #define _POSIX2_CHAR_TERM (-1L) */
192 : /* #define _POSIX2_FORT_DEV (-1L) */
193 : /* #define _POSIX2_FORT_RUN (-1L) */
194 : /* #define _POSIX2_LOCALEDEF (-1L) */
195 : /* #define _POSIX2_PBS (-1L) */
196 : /* #define _POSIX2_PBS_ACCOUNTING (-1L) */
197 : /* #define _POSIX2_PBS_CHECKPOINT (-1L) */
198 : /* #define _POSIX2_PBS_LOCATE (-1L) */
199 : /* #define _POSIX2_PBS_MESSAGE (-1L) */
200 : /* #define _POSIX2_PBS_TRACK (-1L) */
201 : /* #define _POSIX2_SW_DEV (-1L) */
202 : /* #define _POSIX2_UPE (-1L) */
203 :
204 : /*
205 : * X/Open System Interfaces
206 : */
207 : #define _XOPEN_VERSION 700
208 : /* #define _XOPEN_CRYPT (-1L) */
209 : /* #define _XOPEN_ENH_I18N (-1L) */
210 : #if defined(CONFIG_XSI_REALTIME) || \
211 : (defined(CONFIG_POSIX_FSYNC) && defined(CONFIG_POSIX_MEMLOCK) && \
212 : defined(CONFIG_POSIX_MEMLOCK_RANGE) && defined(CONFIG_POSIX_MESSAGE_PASSING) && \
213 : defined(CONFIG_POSIX_PRIORITY_SCHEDULING) && \
214 : defined(CONFIG_POSIX_SHARED_MEMORY_OBJECTS) && defined(CONFIG_POSIX_SYNCHRONIZED_IO))
215 : #define _XOPEN_REALTIME _XOPEN_VERSION
216 : #endif
217 : /* #define _XOPEN_REALTIME_THREADS (-1L) */
218 : /* #define _XOPEN_SHM (-1L) */
219 :
220 : #ifdef CONFIG_XOPEN_STREAMS
221 : #define _XOPEN_STREAMS _XOPEN_VERSION
222 : #endif
223 :
224 : /* #define _XOPEN_UNIX (-1L) */
225 : /* #define _XOPEN_UUCP (-1L) */
226 :
227 : #endif /* INCLUDE_ZEPHYR_POSIX_POSIX_FEATURES_H_ */
|