1/* 2 * Written by Joel Sherrill <joel@OARcorp.com>. 3 * 4 * COPYRIGHT (c) 1989-2000. 5 * 6 * On-Line Applications Research Corporation (OAR). 7 * 8 * Permission to use, copy, modify, and distribute this software for any 9 * purpose without fee is hereby granted, provided that this entire notice 10 * is included in all copies of any software which is or includes a copy 11 * or modification of this software. 12 * 13 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED 14 * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION 15 * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS 16 * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. 17 * 18 * $Id: features.h,v 1.22 2010/08/09 08:29:22 corinna Exp $ 19 */ 20 21#ifndef _SYS_FEATURES_H 22#define _SYS_FEATURES_H 23 24#ifdef __cplusplus 25extern "C" { 26#endif 27 28/* RTEMS adheres to POSIX -- 1003.1b with some features from annexes. */ 29 30#ifdef __rtems__ 31#define _POSIX_JOB_CONTROL 1 32#define _POSIX_SAVED_IDS 1 33#define _POSIX_VERSION 199309L 34#define _POSIX_ASYNCHRONOUS_IO 1 35#define _POSIX_FSYNC 1 36#define _POSIX_MAPPED_FILES 1 37#define _POSIX_MEMLOCK 1 38#define _POSIX_MEMLOCK_RANGE 1 39#define _POSIX_MEMORY_PROTECTION 1 40#define _POSIX_MESSAGE_PASSING 1 41#define _POSIX_MONOTONIC_CLOCK 200112L 42#define _POSIX_PRIORITIZED_IO 1 43#define _POSIX_PRIORITY_SCHEDULING 1 44#define _POSIX_REALTIME_SIGNALS 1 45#define _POSIX_SEMAPHORES 1 46/* #define _POSIX_SHARED_MEMORY_OBJECTS 1 */ 47#define _POSIX_SYNCHRONIZED_IO 1 48#define _POSIX_TIMERS 1 49#define _POSIX_BARRIERS 200112L 50#define _POSIX_READER_WRITER_LOCKS 200112L 51#define _POSIX_SPIN_LOCKS 200112L 52 53 54/* In P1003.1b but defined by drafts at least as early as P1003.1c/D10 */ 55#define _POSIX_THREADS 1 56#define _POSIX_THREAD_ATTR_STACKADDR 1 57#define _POSIX_THREAD_ATTR_STACKSIZE 1 58#define _POSIX_THREAD_PRIORITY_SCHEDULING 1 59#define _POSIX_THREAD_PRIO_INHERIT 1 60#define _POSIX_THREAD_PRIO_PROTECT 1 61#define _POSIX_THREAD_PROCESS_SHARED 1 62#define _POSIX_THREAD_SAFE_FUNCTIONS 1 63 64/* P1003.4b/D8 defines the constants below this comment. */ 65#define _POSIX_SPAWN 1 66#define _POSIX_TIMEOUTS 1 67#define _POSIX_CPUTIME 1 68#define _POSIX_THREAD_CPUTIME 1 69#define _POSIX_SPORADIC_SERVER 1 70#define _POSIX_THREAD_SPORADIC_SERVER 1 71#define _POSIX_DEVICE_CONTROL 1 72#define _POSIX_DEVCTL_DIRECTION 1 73#define _POSIX_INTERRUPT_CONTROL 1 74#define _POSIX_ADVISORY_INFO 1 75 76/* UNIX98 added some new pthread mutex attributes */ 77#define _UNIX98_THREAD_MUTEX_ATTRIBUTES 1 78 79#endif 80 81/* XMK loosely adheres to POSIX -- 1003.1 */ 82#ifdef __XMK__ 83#define _POSIX_THREADS 1 84#define _POSIX_THREAD_PRIORITY_SCHEDULING 1 85#endif 86 87 88#ifdef __svr4__ 89# define _POSIX_JOB_CONTROL 1 90# define _POSIX_SAVED_IDS 1 91# define _POSIX_VERSION 199009L 92#endif 93 94#ifdef __CYGWIN__ 95 96#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L 97#define _POSIX_VERSION 200112L 98#define _POSIX2_VERSION 200112L 99#define _XOPEN_VERSION 600 100 101#define _POSIX_ADVISORY_INFO 200112L 102/* #define _POSIX_ASYNCHRONOUS_IO -1 */ 103/* #define _POSIX_BARRIERS -1 */ 104#define _POSIX_CHOWN_RESTRICTED 1 105/* #define _POSIX_CLOCK_SELECTION -1 */ 106/* #define _POSIX_CPUTIME -1 */ 107#define _POSIX_FSYNC 200112L 108#define _POSIX_IPV6 200112L 109#define _POSIX_JOB_CONTROL 1 110#define _POSIX_MAPPED_FILES 200112L 111/* #define _POSIX_MEMLOCK -1 */ 112#define _POSIX_MEMLOCK_RANGE 200112L 113#define _POSIX_MEMORY_PROTECTION 200112L 114#define _POSIX_MESSAGE_PASSING 200112L 115#define _POSIX_MONOTONIC_CLOCK 200112L 116#define _POSIX_NO_TRUNC 1 117/* #define _POSIX_PRIORITIZED_IO -1 */ 118#define _POSIX_PRIORITY_SCHEDULING 200112L 119#define _POSIX_RAW_SOCKETS 200112L 120#define _POSIX_READER_WRITER_LOCKS 200112L 121#define _POSIX_REALTIME_SIGNALS 200112L 122#define _POSIX_REGEXP 1 123#define _POSIX_SAVED_IDS 1 124#define _POSIX_SEMAPHORES 200112L 125#define _POSIX_SHARED_MEMORY_OBJECTS 200112L 126#define _POSIX_SHELL 1 127/* #define _POSIX_SPAWN -1 */ 128/* #define _POSIX_SPIN_LOCKS -1 */ 129/* #define _POSIX_SPORADIC_SERVER -1 */ 130#define _POSIX_SYNCHRONIZED_IO 200112L 131/* #define _POSIX_THREAD_ATTR_STACKADDR -1 */ 132#define _POSIX_THREAD_ATTR_STACKSIZE 200112L 133/* #define _POSIX_THREAD_CPUTIME -1 */ 134/* #define _POSIX_THREAD_PRIO_INHERIT -1 */ 135/* #define _POSIX_THREAD_PRIO_PROTECT -1 */ 136#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L 137#define _POSIX_THREAD_PROCESS_SHARED 200112L 138#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L 139/* #define _POSIX_THREAD_SPORADIC_SERVER -1 */ 140#define _POSIX_THREADS 200112L 141/* #define _POSIX_TIMEOUTS -1 */ 142#define _POSIX_TIMERS 1 143/* #define _POSIX_TRACE -1 */ 144/* #define _POSIX_TRACE_EVENT_FILTER -1 */ 145/* #define _POSIX_TRACE_INHERIT -1 */ 146/* #define _POSIX_TRACE_LOG -1 */ 147/* #define _POSIX_TYPED_MEMORY_OBJECTS -1 */ 148#define _POSIX_VDISABLE '\0' 149#define _POSIX2_C_BIND 200112L 150#define _POSIX2_C_DEV 200112L 151#define _POSIX2_CHAR_TERM 200112L 152/* #define _POSIX2_FORT_DEV -1 */ 153/* #define _POSIX2_FORT_RUN -1 */ 154/* #define _POSIX2_LOCALEDEF -1 */ 155/* #define _POSIX2_PBS -1 */ 156/* #define _POSIX2_PBS_ACCOUNTING -1 */ 157/* #define _POSIX2_PBS_CHECKPOINT -1 */ 158/* #define _POSIX2_PBS_LOCATE -1 */ 159/* #define _POSIX2_PBS_MESSAGE -1 */ 160/* #define _POSIX2_PBS_TRACK -1 */ 161#define _POSIX2_SW_DEV 200112L 162#define _POSIX2_UPE 200112L 163#define _POSIX_V6_ILP32_OFF32 -1 164#define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32 165#define _POSIX_V6_ILP32_OFFBIG 1 166#define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG 167#define _POSIX_V6_LP64_OFF64 -1 168#define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64 169#define _POSIX_V6_LPBIG_OFFBIG -1 170#define _XBS5_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG 171#define _XOPEN_CRYPT 1 172#define _XOPEN_ENH_I18N 1 173/* #define _XOPEN_LEGACY -1 */ 174/* #define _XOPEN_REALTIME -1 */ 175/* #define _XOPEN_REALTIME_THREADS -1 */ 176#define _XOPEN_SHM 1 177/* #define _XOPEN_STREAMS -1 */ 178/* #define _XOPEN_UNIX -1 */ 179 180#endif /* !__STRICT_ANSI__ || __cplusplus || __STDC_VERSION__ >= 199901L */ 181#endif /* __CYGWIN__ */ 182 183/* Per the permission given in POSIX.1-2008 section 2.2.1, define 184 * _POSIX_C_SOURCE if _XOPEN_SOURCE is defined and _POSIX_C_SOURCE is not. 185 * (_XOPEN_SOURCE indicates that XSI extensions are desired by an application.) 186 * This permission is first granted in 2008, but use it for older ones, also. 187 * Allow for _XOPEN_SOURCE to be empty (from the earliest form of it, before it 188 * was required to have specific values). 189 */ 190#if !defined(_POSIX_C_SOURCE) && defined(_XOPEN_SOURCE) 191 #if (_XOPEN_SOURCE - 0) == 700 /* POSIX.1-2008 */ 192 #define _POSIX_C_SOURCE 200809L 193 #elif (_XOPEN_SOURCE - 0) == 600 /* POSIX.1-2001 or 2004 */ 194 #define _POSIX_C_SOURCE 200112L 195 #elif (_XOPEN_SOURCE - 0) == 500 /* POSIX.1-1995 */ 196 #define _POSIX_C_SOURCE 199506L 197 #elif (_XOPEN_SOURCE - 0) < 500 /* really old */ 198 #define _POSIX_C_SOURCE 2 199 #endif 200#endif 201 202#ifdef __cplusplus 203} 204#endif 205#endif /* _SYS_FEATURES_H */ 206