1 /*
2  * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
3  *
4  * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
5  */
6 /*
7  * Never include this file directly; use <unistd.h> instead.
8  */
9 
10 #ifndef	_BITS_UCLIBC_POSIX_OPT_H
11 #define	_BITS_UCLIBC_POSIX_OPT_H	1
12 
13 /* This file works correctly only if posix_opt.h is the NPTL version */
14 #ifndef _POSIX_THREADS
15 # error posix_opt.h was incorrectly updated, use the NPTL version from glibc
16 #endif
17 
18 /* change first options based on what glibc does */
19 
20 #ifndef __UCLIBC_HAS_THREADS_NATIVE__
21 # undef _POSIX_THREAD_PROCESS_SHARED
22 # define _POSIX_THREAD_PROCESS_SHARED	-1
23 # undef _POSIX_CLOCK_SELECTION
24 # define _POSIX_CLOCK_SELECTION		-1
25 # undef _POSIX_THREAD_PRIO_INHERIT
26 # define _POSIX_THREAD_PRIO_INHERIT	-1
27 # undef _POSIX_THREAD_PRIO_PROTECT
28 # define _POSIX_THREAD_PRIO_PROTECT	-1
29 # undef _POSIX_THREAD_ROBUST_PRIO_INHERIT
30 # undef _POSIX_THREAD_ROBUST_PRIO_PROTECT
31 #endif
32 
33 /* this has to be adapted to uClibc, not all are thread related */
34 #ifndef __UCLIBC_HAS_THREADS__
35 # undef _XOPEN_REALTIME_THREADS
36 # undef _POSIX_THREADS
37 # undef _POSIX_REENTRANT_FUNCTIONS
38 # undef _POSIX_THREAD_SAFE_FUNCTIONS
39 # undef _POSIX_THREAD_PRIORITY_SCHEDULING
40 # undef _POSIX_THREAD_ATTR_STACKSIZE
41 # undef _POSIX_THREAD_ATTR_STACKADDR
42 # undef _POSIX_THREAD_PRIO_INHERIT
43 # undef _POSIX_THREAD_PRIO_PROTECT
44 # undef _POSIX_SEMAPHORES
45 # undef _POSIX_ASYNCHRONOUS_IO
46 # undef _POSIX_ASYNC_IO
47 # undef _LFS_ASYNCHRONOUS_IO
48 # undef _POSIX_PRIORITIZED_IO
49 # undef _LFS64_ASYNCHRONOUS_IO
50 # undef _POSIX_CPUTIME
51 # undef _POSIX_THREAD_CPUTIME
52 # undef _POSIX_READER_WRITER_LOCKS
53 # undef _POSIX_TIMEOUTS
54 # undef _POSIX_SPIN_LOCKS
55 # undef _POSIX_BARRIERS
56 # undef _POSIX_MESSAGE_PASSING
57 # undef _POSIX_THREAD_PROCESS_SHARED
58 # undef _POSIX_CLOCK_SELECTION
59 # undef _POSIX_ADVISORY_INFO
60 /*# undef _POSIX_RAW_SOCKETS*/
61 /*# undef _POSIX2_CHAR_TERM*/
62 # undef _POSIX_SPORADIC_SERVER
63 # undef _POSIX_THREAD_SPORADIC_SERVER
64 /*# undef _POSIX_TRACE
65 # undef _POSIX_TRACE_EVENT_FILTER
66 # undef _POSIX_TRACE_INHERIT
67 # undef _POSIX_TRACE_LOG
68 # undef _POSIX_TYPED_MEMORY_OBJECTS*/
69 #endif
70 
71 /* were in earlier version, used by sysconf */
72 #define	_POSIX_POLL	1
73 #define	_POSIX_SELECT	1
74 
75 /* disable independently unsupported features */
76 #undef _POSIX_TRACE
77 #undef _POSIX_TRACE_EVENT_FILTER
78 #undef _POSIX_TRACE_INHERIT
79 #undef _POSIX_TRACE_LOG
80 #undef _POSIX_TYPED_MEMORY_OBJECTS
81 #undef _POSIX_SPAWN
82 
83 #if 0 /* does uClibc support these? */
84 # undef _POSIX_ASYNCHRONOUS_IO
85 # undef _POSIX_ASYNC_IO
86 # undef _LFS_ASYNCHRONOUS_IO
87 # undef _POSIX_PRIORITIZED_IO
88 # undef _LFS64_ASYNCHRONOUS_IO
89 # undef _POSIX_MESSAGE_PASSING
90 #endif
91 
92 /* change options based on uClibc config options */
93 
94 #if 0 /*ndef __UCLIBC_HAS_POSIX_TIMERS__*/
95 # undef _POSIX_TIMERS
96 # undef _POSIX_THREAD_CPUTIME
97 #endif
98 
99 #if 0 /*ndef __UCLIBC_HAS_POSIX_BARRIERS__*/
100 # undef _POSIX_BARRIERS
101 #endif
102 
103 #if 0 /*ndef __UCLIBC_HAS_POSIX_SPINLOCKS__*/
104 # undef _POSIX_SPIN_LOCKS
105 #endif
106 
107 #ifndef __ARCH_USE_MMU__
108 # undef _POSIX_MEMLOCK
109 # undef _POSIX_MEMLOCK_RANGE
110 # undef _POSIX_MEMORY_PROTECTION
111 #endif
112 
113 #ifndef __UCLIBC_HAS_LFS__
114 # undef _LFS64_ASYNCHRONOUS_IO
115 # undef _LFS_LARGEFILE
116 # undef _LFS64_LARGEFILE
117 # undef _LFS64_STDIO
118 #endif
119 
120 #ifndef __UCLIBC_HAS_REALTIME__
121 # undef _POSIX_SEMAPHORES
122 #endif
123 
124 #ifndef __UCLIBC_HAS_REGEX__
125 # undef _POSIX_REGEXP
126 #endif
127 
128 #ifndef __UCLIBC_HAS_IPV6__
129 # undef _POSIX_IPV6
130 #endif
131 
132 #ifndef __UCLIBC_HAS_SOCKET__
133 # undef _POSIX_RAW_SOCKETS
134 #endif
135 
136 #endif /* bits/uClibc_posix_opt.h */
137