Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  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
  25. extern "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.