master
  1/* Define POSIX options for Linux.
  2   Copyright (C) 1996-2025 Free Software Foundation, Inc.
  3   This file is part of the GNU C Library.
  4
  5   The GNU C Library is free software; you can redistribute it and/or
  6   modify it under the terms of the GNU Lesser General Public License as
  7   published by the Free Software Foundation; either version 2.1 of the
  8   License, or (at your option) any later version.
  9
 10   The GNU C Library is distributed in the hope that it will be useful,
 11   but WITHOUT ANY WARRANTY; without even the implied warranty of
 12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 13   Lesser General Public License for more details.
 14
 15   You should have received a copy of the GNU Lesser General Public
 16   License along with the GNU C Library; see the file COPYING.LIB.  If
 17   not, see <https://www.gnu.org/licenses/>.  */
 18
 19#ifndef	_BITS_POSIX_OPT_H
 20#define	_BITS_POSIX_OPT_H	1
 21
 22/* Job control is supported.  */
 23#define	_POSIX_JOB_CONTROL	1
 24
 25/* Processes have a saved set-user-ID and a saved set-group-ID.  */
 26#define	_POSIX_SAVED_IDS	1
 27
 28/* Priority scheduling is not supported with the correct semantics,
 29   but GNU/Linux applications expect that the corresponding interfaces
 30   are available, even though the semantics do not meet the POSIX
 31   requirements.  See glibc bug 14829.  */
 32#define	_POSIX_PRIORITY_SCHEDULING	200809L
 33
 34/* Synchronizing file data is supported.  */
 35#define	_POSIX_SYNCHRONIZED_IO	200809L
 36
 37/* The fsync function is present.  */
 38#define	_POSIX_FSYNC	200809L
 39
 40/* Mapping of files to memory is supported.  */
 41#define	_POSIX_MAPPED_FILES	200809L
 42
 43/* Locking of all memory is supported.  */
 44#define	_POSIX_MEMLOCK	200809L
 45
 46/* Locking of ranges of memory is supported.  */
 47#define	_POSIX_MEMLOCK_RANGE	200809L
 48
 49/* Setting of memory protections is supported.  */
 50#define	_POSIX_MEMORY_PROTECTION	200809L
 51
 52/* Some filesystems allow all users to change file ownership.  */
 53#define	_POSIX_CHOWN_RESTRICTED	0
 54
 55/* `c_cc' member of 'struct termios' structure can be disabled by
 56   using the value _POSIX_VDISABLE.  */
 57#define	_POSIX_VDISABLE	'\0'
 58
 59/* Filenames are not silently truncated.  */
 60#define	_POSIX_NO_TRUNC	1
 61
 62/* X/Open realtime support is available.  */
 63#define _XOPEN_REALTIME	1
 64
 65/* X/Open thread realtime support is available.  */
 66#define _XOPEN_REALTIME_THREADS	1
 67
 68/* XPG4.2 shared memory is supported.  */
 69#define	_XOPEN_SHM	1
 70
 71/* Tell we have POSIX threads.  */
 72#define _POSIX_THREADS	200809L
 73
 74/* We have the reentrant functions described in POSIX.  */
 75#define _POSIX_REENTRANT_FUNCTIONS      1
 76#define _POSIX_THREAD_SAFE_FUNCTIONS	200809L
 77
 78/* We provide priority scheduling for threads.  */
 79#define _POSIX_THREAD_PRIORITY_SCHEDULING	200809L
 80
 81/* We support user-defined stack sizes.  */
 82#define _POSIX_THREAD_ATTR_STACKSIZE	200809L
 83
 84/* We support user-defined stacks.  */
 85#define _POSIX_THREAD_ATTR_STACKADDR	200809L
 86
 87/* We support priority inheritance.  */
 88#define _POSIX_THREAD_PRIO_INHERIT	200809L
 89
 90/* We support priority protection, though only for non-robust
 91   mutexes.  */
 92#define _POSIX_THREAD_PRIO_PROTECT	200809L
 93
 94#ifdef __USE_XOPEN2K8
 95/* We support priority inheritance for robust mutexes.  */
 96# define _POSIX_THREAD_ROBUST_PRIO_INHERIT	200809L
 97
 98/* We do not support priority protection for robust mutexes.  */
 99# define _POSIX_THREAD_ROBUST_PRIO_PROTECT	-1
100#endif
101
102/* We support POSIX.1b semaphores.  */
103#define _POSIX_SEMAPHORES	200809L
104
105/* Real-time signals are supported.  */
106#define _POSIX_REALTIME_SIGNALS	200809L
107
108/* We support asynchronous I/O.  */
109#define _POSIX_ASYNCHRONOUS_IO	200809L
110#define _POSIX_ASYNC_IO		1
111/* Alternative name for Unix98.  */
112#define _LFS_ASYNCHRONOUS_IO	1
113/* Support for prioritization is also available.  */
114#define _POSIX_PRIORITIZED_IO	200809L
115
116/* The LFS support in asynchronous I/O is also available.  */
117#define _LFS64_ASYNCHRONOUS_IO	1
118
119/* The rest of the LFS is also available.  */
120#define _LFS_LARGEFILE		1
121#define _LFS64_LARGEFILE	1
122#define _LFS64_STDIO		1
123
124/* POSIX shared memory objects are implemented.  */
125#define _POSIX_SHARED_MEMORY_OBJECTS	200809L
126
127/* CPU-time clocks support needs to be checked at runtime.  */
128#define _POSIX_CPUTIME	0
129
130/* Clock support in threads must be also checked at runtime.  */
131#define _POSIX_THREAD_CPUTIME	0
132
133/* GNU libc provides regular expression handling.  */
134#define _POSIX_REGEXP	1
135
136/* Reader/Writer locks are available.  */
137#define _POSIX_READER_WRITER_LOCKS	200809L
138
139/* We have a POSIX shell.  */
140#define _POSIX_SHELL	1
141
142/* We support the Timeouts option.  */
143#define _POSIX_TIMEOUTS	200809L
144
145/* We support spinlocks.  */
146#define _POSIX_SPIN_LOCKS	200809L
147
148/* The `spawn' function family is supported.  */
149#define _POSIX_SPAWN	200809L
150
151/* We have POSIX timers.  */
152#define _POSIX_TIMERS	200809L
153
154/* The barrier functions are available.  */
155#define _POSIX_BARRIERS	200809L
156
157/* POSIX message queues are available.  */
158#define	_POSIX_MESSAGE_PASSING	200809L
159
160/* Thread process-shared synchronization is supported.  */
161#define _POSIX_THREAD_PROCESS_SHARED	200809L
162
163/* The monotonic clock might be available.  */
164#define _POSIX_MONOTONIC_CLOCK	0
165
166/* The clock selection interfaces are available.  */
167#define _POSIX_CLOCK_SELECTION	200809L
168
169/* Advisory information interfaces are available.  */
170#define _POSIX_ADVISORY_INFO	200809L
171
172/* IPv6 support is available.  */
173#define _POSIX_IPV6	200809L
174
175/* Raw socket support is available.  */
176#define _POSIX_RAW_SOCKETS	200809L
177
178/* We have at least one terminal.  */
179#define _POSIX2_CHAR_TERM	200809L
180
181/* Neither process nor thread sporadic server interfaces is available.  */
182#define _POSIX_SPORADIC_SERVER	-1
183#define _POSIX_THREAD_SPORADIC_SERVER	-1
184
185/* trace.h is not available.  */
186#define _POSIX_TRACE	-1
187#define _POSIX_TRACE_EVENT_FILTER	-1
188#define _POSIX_TRACE_INHERIT	-1
189#define _POSIX_TRACE_LOG	-1
190
191/* Typed memory objects are not available.  */
192#define _POSIX_TYPED_MEMORY_OBJECTS	-1
193
194#endif /* bits/posix_opt.h */