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 : * POSIX System Interfaces 32 : */ 33 : 34 : #define _POSIX_VERSION 200809L 35 : 36 : #define _POSIX_CHOWN_RESTRICTED (0) 37 : #define _POSIX_NO_TRUNC (0) 38 : #define _POSIX_VDISABLE ('\0') 39 : 40 : /* #define _POSIX_ADVISORY_INFO (-1L) */ 41 : 42 : #ifdef CONFIG_POSIX_ASYNCHRONOUS_IO 43 : #define _POSIX_ASYNCHRONOUS_IO _POSIX_VERSION 44 : #endif 45 : 46 : #ifdef CONFIG_POSIX_BARRIERS 47 : #define _POSIX_BARRIERS _POSIX_VERSION 48 : #endif 49 : 50 : #ifdef CONFIG_POSIX_CLOCK_SELECTION 51 : #define _POSIX_CLOCK_SELECTION _POSIX_VERSION 52 : #endif 53 : 54 : #ifdef CONFIG_POSIX_CPUTIME 55 : #define _POSIX_CPUTIME _POSIX_VERSION 56 : #endif 57 : 58 : #ifdef CONFIG_POSIX_FSYNC 59 : #define _POSIX_FSYNC _POSIX_VERSION 60 : #endif 61 : 62 : #ifdef CONFIG_NET_IPV6 63 : #define _POSIX_IPV6 _POSIX_VERSION 64 : #endif 65 : 66 : /* #define _POSIX_JOB_CONTROL (-1L) */ 67 : 68 : #ifdef CONFIG_POSIX_MAPPED_FILES 69 : #define _POSIX_MAPPED_FILES _POSIX_VERSION 70 : #endif 71 : 72 : #ifdef CONFIG_POSIX_MEMLOCK 73 : #define _POSIX_MEMLOCK _POSIX_VERSION 74 : #endif 75 : 76 : #ifdef CONFIG_POSIX_MEMLOCK_RANGE 77 : #define _POSIX_MEMLOCK_RANGE _POSIX_VERSION 78 : #endif 79 : 80 : #ifdef CONFIG_POSIX_MEMORY_PROTECTION 81 : #define _POSIX_MEMORY_PROTECTION _POSIX_VERSION 82 : #endif 83 : 84 : #ifdef CONFIG_POSIX_MESSAGE_PASSING 85 : #define _POSIX_MESSAGE_PASSING _POSIX_VERSION 86 : #endif 87 : 88 : #ifdef CONFIG_POSIX_MONOTONIC_CLOCK 89 : #define _POSIX_MONOTONIC_CLOCK _POSIX_VERSION 90 : #endif 91 : 92 : /* #define _POSIX_PRIORITIZED_IO (-1L) */ 93 : 94 : #ifdef CONFIG_POSIX_PRIORITY_SCHEDULING 95 : #define _POSIX_PRIORITY_SCHEDULING _POSIX_VERSION 96 : #endif 97 : 98 : #ifdef CONFIG_NET_SOCKETS_PACKET 99 : #define _POSIX_RAW_SOCKETS _POSIX_VERSION 100 : #endif 101 : 102 : #ifdef CONFIG_POSIX_READER_WRITER_LOCKS 103 : #define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION 104 : #endif 105 : 106 : /* #define _POSIX_REALTIME_SIGNALS (-1L) */ 107 : /* #define _POSIX_REGEXP (-1L) */ 108 : /* #define _POSIX_SAVED_IDS (-1L) */ 109 : 110 : #ifdef CONFIG_POSIX_SEMAPHORES 111 : #define _POSIX_SEMAPHORES _POSIX_VERSION 112 : #endif 113 : 114 : #ifdef CONFIG_POSIX_SHARED_MEMORY_OBJECTS 115 : #define _POSIX_SHARED_MEMORY_OBJECTS _POSIX_VERSION 116 : #endif 117 : 118 : /* #define _POSIX_SHELL (-1L) */ 119 : /* #define _POSIX_SPAWN (-1L) */ 120 : 121 : #ifdef CONFIG_POSIX_SPIN_LOCKS 122 : #define _POSIX_SPIN_LOCKS _POSIX_VERSION 123 : #endif 124 : 125 : /* #define _POSIX_SPORADIC_SERVER (-1L) */ 126 : 127 : #ifdef CONFIG_POSIX_SYNCHRONIZED_IO 128 : #define _POSIX_SYNCHRONIZED_IO _POSIX_VERSION 129 : #endif 130 : 131 : #ifdef CONFIG_POSIX_THREAD_ATTR_STACKADDR 132 : #define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION 133 : #endif 134 : 135 : #ifdef CONFIG_POSIX_THREAD_ATTR_STACKSIZE 136 : #define _POSIX_THREAD_ATTR_STACKSIZE _POSIX_VERSION 137 : #endif 138 : 139 : #ifdef CONFIG_POSIX_THREAD_CPUTIME 140 : #define _POSIX_THREAD_CPUTIME _POSIX_VERSION 141 : #endif 142 : 143 : #ifdef CONFIG_POSIX_THREAD_PRIO_INHERIT 144 : #define _POSIX_THREAD_PRIO_INHERIT _POSIX_VERSION 145 : #endif 146 : 147 : #ifdef CONFIG_POSIX_THREAD_PRIO_PROTECT 148 : #define _POSIX_THREAD_PRIO_PROTECT _POSIX_VERSION 149 : #endif 150 : 151 : #ifdef CONFIG_POSIX_THREAD_PRIORITY_SCHEDULING 152 : #define _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_VERSION 153 : #endif 154 : 155 : /* #define _POSIX_THREAD_PROCESS_SHARED (-1L) */ 156 : /* #define _POSIX_THREAD_ROBUST_PRIO_INHERIT (-1L) */ 157 : /* #define _POSIX_THREAD_ROBUST_PRIO_PROTECT (-1L) */ 158 : 159 : #ifdef CONFIG_POSIX_THREAD_SAFE_FUNCTIONS 160 : #define _POSIX_THREAD_SAFE_FUNCTIONS _POSIX_VERSION 161 : #endif 162 : 163 : /* #define _POSIX_THREAD_SPORADIC_SERVER (-1L) */ 164 : 165 : #ifdef CONFIG_POSIX_THREADS 166 : #ifndef _POSIX_THREADS 167 : #define _POSIX_THREADS _POSIX_VERSION 168 : #endif 169 : #endif 170 : 171 : #ifdef CONFIG_POSIX_TIMEOUTS 172 : #define _POSIX_TIMEOUTS _POSIX_VERSION 173 : #endif 174 : 175 : #ifdef CONFIG_POSIX_TIMERS 176 : #define _POSIX_TIMERS _POSIX_VERSION 177 : #endif 178 : 179 : /* #define _POSIX_TRACE (-1L) */ 180 : /* #define _POSIX_TRACE_EVENT_FILTER (-1L) */ 181 : /* #define _POSIX_TRACE_INHERIT (-1L) */ 182 : /* #define _POSIX_TRACE_LOG (-1L) */ 183 : /* #define _POSIX_TYPED_MEMORY_OBJECTS (-1L) */ 184 : 185 : /* 186 : * POSIX v6 Options 187 : */ 188 : /* #define _POSIX_V6_ILP32_OFF32 (-1L) */ 189 : /* #define _POSIX_V6_ILP32_OFFBIG (-1L) */ 190 : /* #define _POSIX_V6_LP64_OFF64 (-1L) */ 191 : /* #define _POSIX_V6_LPBIG_OFFBIG (-1L) */ 192 : 193 : /* 194 : * POSIX v7 Options 195 : */ 196 : /* #define _POSIX_V7_ILP32_OFF32 (-1L) */ 197 : /* #define _POSIX_V7_ILP32_OFFBIG (-1L) */ 198 : /* #define _POSIX_V7_LP64_OFF64 (-1L) */ 199 : /* #define _POSIX_V7_LPBIG_OFFBIG (-1L) */ 200 : 201 : /* 202 : * POSIX2 Options 203 : */ 204 : #define _POSIX2_VERSION _POSIX_VERSION 205 : #define _POSIX2_C_BIND _POSIX2_VERSION 206 : #define _POSIX2_C_DEV _POSIX2_VERSION 207 : /* #define _POSIX2_CHAR_TERM (-1L) */ 208 : /* #define _POSIX2_FORT_DEV (-1L) */ 209 : /* #define _POSIX2_FORT_RUN (-1L) */ 210 : /* #define _POSIX2_LOCALEDEF (-1L) */ 211 : /* #define _POSIX2_PBS (-1L) */ 212 : /* #define _POSIX2_PBS_ACCOUNTING (-1L) */ 213 : /* #define _POSIX2_PBS_CHECKPOINT (-1L) */ 214 : /* #define _POSIX2_PBS_LOCATE (-1L) */ 215 : /* #define _POSIX2_PBS_MESSAGE (-1L) */ 216 : /* #define _POSIX2_PBS_TRACK (-1L) */ 217 : /* #define _POSIX2_SW_DEV (-1L) */ 218 : /* #define _POSIX2_UPE (-1L) */ 219 : 220 : /* 221 : * X/Open System Interfaces 222 : */ 223 : #define _XOPEN_VERSION 700 224 : /* #define _XOPEN_CRYPT (-1L) */ 225 : /* #define _XOPEN_ENH_I18N (-1L) */ 226 : /* #define _XOPEN_REALTIME (-1L) */ 227 : /* #define _XOPEN_REALTIME_THREADS (-1L) */ 228 : /* #define _XOPEN_SHM (-1L) */ 229 : 230 : #ifdef CONFIG_XOPEN_STREAMS 231 : #define _XOPEN_STREAMS _XOPEN_VERSION 232 : #endif 233 : 234 : /* #define _XOPEN_UNIX (-1L) */ 235 : /* #define _XOPEN_UUCP (-1L) */ 236 : 237 : /* Maximum values */ 238 : #define _POSIX_CLOCKRES_MIN (20000000L) 239 : 240 : /* Minimum values */ 241 : #define _POSIX_AIO_LISTIO_MAX (2) 242 : #define _POSIX_AIO_MAX (1) 243 : #define _POSIX_ARG_MAX (4096) 244 : #define _POSIX_CHILD_MAX (25) 245 : #define _POSIX_DELAYTIMER_MAX \ 246 : COND_CODE_1(CONFIG_POSIX_TIMERS, (CONFIG_POSIX_DELAYTIMER_MAX), (0)) 247 : #define _POSIX_HOST_NAME_MAX \ 248 : COND_CODE_1(CONFIG_POSIX_NETWORKING, (CONFIG_POSIX_HOST_NAME_MAX), (0)) 249 : #define _POSIX_LINK_MAX (8) 250 : #define _POSIX_LOGIN_NAME_MAX (9) 251 : #define _POSIX_MAX_CANON (255) 252 : #define _POSIX_MAX_INPUT (255) 253 : #define _POSIX_MQ_OPEN_MAX \ 254 : COND_CODE_1(CONFIG_POSIX_MESSAGE_PASSING, (CONFIG_POSIX_MQ_OPEN_MAX), (0)) 255 : #define _POSIX_MQ_PRIO_MAX (32) 256 : #define _POSIX_NAME_MAX (14) 257 : #define _POSIX_NGROUPS_MAX (8) 258 : #define _POSIX_OPEN_MAX CONFIG_POSIX_OPEN_MAX 259 : #define _POSIX_PATH_MAX (256) 260 : #define _POSIX_PIPE_BUF (512) 261 : #define _POSIX_RE_DUP_MAX (255) 262 : #define _POSIX_RTSIG_MAX \ 263 : COND_CODE_1(CONFIG_POSIX_REALTIME_SIGNALS, (CONFIG_POSIX_RTSIG_MAX), (0)) 264 : #define _POSIX_SEM_NSEMS_MAX \ 265 : COND_CODE_1(CONFIG_POSIX_SEMAPHORES, (CONFIG_POSIX_SEM_NSEMS_MAX), (0)) 266 : #define _POSIX_SEM_VALUE_MAX \ 267 : COND_CODE_1(CONFIG_POSIX_SEMAPHORES, (CONFIG_POSIX_SEM_VALUE_MAX), (0)) 268 : #define _POSIX_SIGQUEUE_MAX (32) 269 : #define _POSIX_SSIZE_MAX (32767) 270 : #define _POSIX_SS_REPL_MAX (4) 271 : #define _POSIX_STREAM_MAX (8) 272 : #define _POSIX_SYMLINK_MAX (255) 273 : #define _POSIX_SYMLOOP_MAX (8) 274 : #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS (4) 275 : #define _POSIX_THREAD_KEYS_MAX \ 276 : COND_CODE_1(CONFIG_POSIX_THREADS, (CONFIG_POSIX_THREAD_KEYS_MAX), (0)) 277 : #define _POSIX_THREAD_THREADS_MAX \ 278 : COND_CODE_1(CONFIG_POSIX_THREADS, (CONFIG_POSIX_THREAD_THREADS_MAX), (0)) 279 : #define _POSIX_TIMER_MAX \ 280 : COND_CODE_1(CONFIG_POSIX_TIMERS, (CONFIG_POSIX_TIMER_MAX), (0)) 281 : #define _POSIX_TRACE_EVENT_NAME_MAX (30) 282 : #define _POSIX_TRACE_NAME_MAX (8) 283 : #define _POSIX_TRACE_SYS_MAX (8) 284 : #define _POSIX_TRACE_USER_EVENT_MAX (32) 285 : #define _POSIX_TTY_NAME_MAX (9) 286 : #define _POSIX_TZNAME_MAX (6) 287 : #define _POSIX2_BC_BASE_MAX (99) 288 : #define _POSIX2_BC_DIM_MAX (2048) 289 : #define _POSIX2_BC_SCALE_MAX (99) 290 : #define _POSIX2_BC_STRING_MAX (1000) 291 : #define _POSIX2_CHARCLASS_NAME_MAX (14) 292 : #define _POSIX2_COLL_WEIGHTS_MAX (2) 293 : #define _POSIX2_EXPR_NEST_MAX (32) 294 : #define _POSIX2_LINE_MAX (2048) 295 : #define _XOPEN_IOV_MAX (16) 296 : #define _XOPEN_NAME_MAX (255) 297 : #define _XOPEN_PATH_MAX (1024) 298 : 299 : /* Other invariant values */ 300 0 : #define NL_LANGMAX (14) 301 0 : #define NL_MSGMAX (32767) 302 0 : #define NL_SETMAX (255) 303 0 : #define NL_TEXTMAX (_POSIX2_LINE_MAX) 304 0 : #define NZERO (20) 305 : 306 : /* Runtime invariant values */ 307 0 : #define AIO_LISTIO_MAX _POSIX_AIO_LISTIO_MAX 308 0 : #define AIO_MAX _POSIX_AIO_MAX 309 0 : #define AIO_PRIO_DELTA_MAX (0) 310 0 : #define DELAYTIMER_MAX _POSIX_DELAYTIMER_MAX 311 0 : #define HOST_NAME_MAX _POSIX_HOST_NAME_MAX 312 0 : #define LOGIN_NAME_MAX _POSIX_LOGIN_NAME_MAX 313 0 : #define MQ_OPEN_MAX _POSIX_MQ_OPEN_MAX 314 0 : #define MQ_PRIO_MAX _POSIX_MQ_PRIO_MAX 315 : 316 : #ifndef ATEXIT_MAX 317 0 : #define ATEXIT_MAX 8 318 : #endif 319 : 320 0 : #define PAGE_SIZE CONFIG_POSIX_PAGE_SIZE 321 0 : #define PAGESIZE PAGE_SIZE 322 : 323 0 : #define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS 324 0 : #define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX 325 0 : #define PTHREAD_THREADS_MAX _POSIX_THREAD_THREADS_MAX 326 0 : #define RTSIG_MAX _POSIX_RTSIG_MAX 327 0 : #define SEM_NSEMS_MAX _POSIX_SEM_NSEMS_MAX 328 0 : #define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX 329 0 : #define SIGQUEUE_MAX _POSIX_SIGQUEUE_MAX 330 0 : #define STREAM_MAX _POSIX_STREAM_MAX 331 0 : #define SYMLOOP_MAX _POSIX_SYMLOOP_MAX 332 0 : #define TIMER_MAX _POSIX_TIMER_MAX 333 0 : #define TTY_NAME_MAX _POSIX_TTY_NAME_MAX 334 : #ifndef TZNAME_MAX 335 0 : #define TZNAME_MAX _POSIX_TZNAME_MAX 336 : #endif 337 : 338 : /* Pathname variable values */ 339 0 : #define FILESIZEBITS (32) 340 0 : #define POSIX_ALLOC_SIZE_MIN (256) 341 0 : #define POSIX_REC_INCR_XFER_SIZE (1024) 342 0 : #define POSIX_REC_MAX_XFER_SIZE (32767) 343 0 : #define POSIX_REC_MIN_XFER_SIZE (1) 344 0 : #define POSIX_REC_XFER_ALIGN (4) 345 0 : #define SYMLINK_MAX _POSIX_SYMLINK_MAX 346 : 347 : #endif /* INCLUDE_ZEPHYR_POSIX_POSIX_FEATURES_H_ */