1/* Define POSIX options for Linux. 
2 Copyright (C) 1996-2020 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 inheritence. */ 
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 inheritence 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 */ 
195