1 /* Define POSIX options for GNU/Hurd. 2 Copyright (C) 1998-2022 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 7 License as published by the Free Software Foundation; either 8 version 2.1 of the 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; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #ifndef _UNISTD_H 20 #error "Never include this file directly; use <unistd.h> instead." 21 #endif 22 23 #ifndef _BITS_POSIX_OPT_H 24 #define _BITS_POSIX_OPT_H 1 25 26 27 /* Job control is supported. */ 28 #define _POSIX_JOB_CONTROL 1 29 30 /* Processes have a saved set-user-ID and a saved set-group-ID. */ 31 #define _POSIX_SAVED_IDS 1 32 33 /* Priority scheduling is not supported. */ 34 #undef _POSIX_PRIORITY_SCHEDULING 35 36 /* Synchronizing file data is supported, but msync is missing. */ 37 #undef _POSIX_SYNCHRONIZED_IO 38 39 /* The fsync function is present. */ 40 #define _POSIX_FSYNC 200809L 41 42 /* Mapping of files to memory is supported. */ 43 #define _POSIX_MAPPED_FILES 200809L 44 45 /* Locking of all memory is supported. */ 46 #define _POSIX_MEMLOCK 200809L 47 48 /* Locking of ranges of memory is supported. */ 49 #define _POSIX_MEMLOCK_RANGE 200809L 50 51 /* Setting of memory protections is supported. */ 52 #define _POSIX_MEMORY_PROTECTION 200809L 53 54 /* Elements of the `c_cc' member of `struct termios' structure 55 can be disabled by using the value _POSIX_VDISABLE. */ 56 #define _POSIX_VDISABLE '\0' 57 58 59 /* Different Hurd filesystems might do these differently. 60 You must query the particular file with `pathconf' or `fpathconf'. */ 61 #define _POSIX_CHOWN_RESTRICTED 0 /* Only root can change owner of file? */ 62 #define _POSIX_NO_TRUNC 0 /* Overlong file names get error? */ 63 #undef _POSIX_SYNC_IO /* File supports O_SYNC et al? */ 64 65 /* X/Open realtime support is not supported. */ 66 #undef _XOPEN_REALTIME 67 68 /* X/Open thread realtime support is not supported. */ 69 #undef _XOPEN_REALTIME_THREADS 70 71 /* XPG4.2 shared memory is not supported. */ 72 #undef _XOPEN_SHM 73 74 /* Tell we have POSIX threads. */ 75 #define _POSIX_THREADS 200809L 76 77 /* We have the reentrant functions described in POSIX. */ 78 #define _POSIX_REENTRANT_FUNCTIONS 1 79 #define _POSIX_THREAD_SAFE_FUNCTIONS 200809L 80 81 /* We do not provide priority scheduling for threads. */ 82 #define _POSIX_THREAD_PRIORITY_SCHEDULING -1 83 84 /* We support user-defined stack sizes. */ 85 #define _POSIX_THREAD_ATTR_STACKSIZE 200809L 86 87 /* We support user-defined stacks. */ 88 #define _POSIX_THREAD_ATTR_STACKADDR 200809L 89 90 /* We do not support priority inheritence. */ 91 #define _POSIX_THREAD_PRIO_INHERIT -1 92 93 /* We do not support priority protection. */ 94 #define _POSIX_THREAD_PRIO_PROTECT -1 95 96 #ifdef __USE_XOPEN2K8 97 /* We do not support priority inheritence for robust mutexes. */ 98 # define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1 99 100 /* We do not support priority protection for robust mutexes. */ 101 # define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1 102 #endif 103 104 /* We support POSIX.1b semaphores. */ 105 #define _POSIX_SEMAPHORES 200809L 106 107 /* Real-time signals are not yet supported. */ 108 #define _POSIX_REALTIME_SIGNALS -1 109 110 /* Asynchronous I/O might supported with the existing ABI. */ 111 #define _POSIX_ASYNCHRONOUS_IO 0 112 #undef _POSIX_ASYNC_IO 113 /* Alternative name for Unix98. */ 114 #define _LFS_ASYNCHRONOUS_IO _POSIX_ASYNCHRONOUS_IO 115 /* Support for prioritization is not available. */ 116 #undef _POSIX_PRIORITIZED_IO 117 118 /* The LFS support in asynchronous I/O is also available. */ 119 #define _LFS64_ASYNCHRONOUS_IO _POSIX_ASYNCHRONOUS_IO 120 121 /* The rest of the LFS is also available. */ 122 #define _LFS_LARGEFILE 1 123 #define _LFS64_LARGEFILE 1 124 #define _LFS64_STDIO 1 125 126 /* POSIX.4 shared memory objects are supported (using regular files). */ 127 #define _POSIX_SHARED_MEMORY_OBJECTS _POSIX_MAPPED_FILES 128 129 /* CPU-time clocks support needs to be checked at runtime. */ 130 #define _POSIX_CPUTIME 0 131 132 /* Clock support in threads must be also checked at runtime. */ 133 #define _POSIX_THREAD_CPUTIME 0 134 135 /* GNU libc provides regular expression handling. */ 136 #define _POSIX_REGEXP 1 137 138 /* Reader/Writer locks are available. */ 139 #define _POSIX_READER_WRITER_LOCKS 200809L 140 141 /* We have a POSIX shell. */ 142 #define _POSIX_SHELL 1 143 144 /* We support the Timeouts option. */ 145 #define _POSIX_TIMEOUTS 200809L 146 147 /* We support spinlocks. */ 148 #define _POSIX_SPIN_LOCKS 200809L 149 150 /* The `spawn' function family is supported. */ 151 #define _POSIX_SPAWN 200809L 152 153 /* We do not have POSIX timers, but could in future without ABI change. */ 154 #define _POSIX_TIMERS 0 155 156 /* The barrier functions are available. */ 157 #define _POSIX_BARRIERS 200809L 158 159 /* POSIX message queues could be available in future. */ 160 #define _POSIX_MESSAGE_PASSING 0 161 162 /* Thread process-shared synchronization is not supported. */ 163 #define _POSIX_THREAD_PROCESS_SHARED -1 164 165 /* The monotonic clock might be available. */ 166 #define _POSIX_MONOTONIC_CLOCK 0 167 168 /* The clock selection interfaces are available. */ 169 #define _POSIX_CLOCK_SELECTION 200809L 170 171 /* Advisory information interfaces could be available in future. */ 172 #define _POSIX_ADVISORY_INFO 0 173 174 /* IPv6 support is available. */ 175 #define _POSIX_IPV6 200809L 176 177 /* Raw socket support is available. */ 178 #define _POSIX_RAW_SOCKETS 200809L 179 180 /* We have at least one terminal. */ 181 #define _POSIX2_CHAR_TERM 200809L 182 183 /* Neither process nor thread sporadic server interfaces is available. */ 184 #define _POSIX_SPORADIC_SERVER -1 185 #define _POSIX_THREAD_SPORADIC_SERVER -1 186 187 /* trace.h is not available. */ 188 #define _POSIX_TRACE -1 189 #define _POSIX_TRACE_EVENT_FILTER -1 190 #define _POSIX_TRACE_INHERIT -1 191 #define _POSIX_TRACE_LOG -1 192 193 /* Typed memory objects are not available. */ 194 #define _POSIX_TYPED_MEMORY_OBJECTS -1 195 196 #endif /* bits/posix_opt.h */ 197