1 # ====================================================================
5 # POSIX layer configuration data
7 # ====================================================================
8 #####ECOSGPLCOPYRIGHTBEGIN####
9 ## -------------------------------------------
10 ## This file is part of eCos, the Embedded Configurable Operating System.
11 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12 ## Copyright (C) 2008 eCosCentric Limited
14 ## eCos is free software; you can redistribute it and/or modify it under
15 ## the terms of the GNU General Public License as published by the Free
16 ## Software Foundation; either version 2 or (at your option) any later version.
18 ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
19 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
23 ## You should have received a copy of the GNU General Public License along
24 ## with eCos; if not, write to the Free Software Foundation, Inc.,
25 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
27 ## As a special exception, if other files instantiate templates or use macros
28 ## or inline functions from this file, or you compile this file and link it
29 ## with other works to produce a work based on this file, this file does not
30 ## by itself cause the resulting work to be covered by the GNU General Public
31 ## License. However the source code for this file must still be made available
32 ## in accordance with section (3) of the GNU General Public License.
34 ## This exception does not invalidate any other reasons why a work based on
35 ## this file might be covered by the GNU General Public License.
37 ## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
38 ## at http://sources.redhat.com/ecos/ecos-license/
39 ## -------------------------------------------
40 #####ECOSGPLCOPYRIGHTEND####
41 # ====================================================================
42 ######DESCRIPTIONBEGIN####
48 #####DESCRIPTIONEND####
50 # ====================================================================
52 cdl_package CYGPKG_POSIX {
53 display "POSIX compatibility layer"
54 description "This package enables the POSIX compatibility
55 layer that implements IEEE 1003.1."
57 doc ref/posix-compatibility.html
60 requires CYGPKG_KERNEL
61 requires CYGPKG_ISOINFRA
63 requires CYGINT_ISO_ERRNO
64 requires CYGINT_ISO_ERRNO_CODES
65 requires CYGIMP_KERNEL_SCHED_SORTED_QUEUES
67 implements CYGINT_ISO_POSIX_LIMITS
68 requires { CYGBLD_ISO_POSIX_LIMITS_HEADER == \
69 "<cyg/posix/limits.h>" }
70 requires { CYGBLD_ISO_PMUTEXTYPES_HEADER == \
71 "<cyg/posix/muttypes.h>" }
72 requires { CYGBLD_ISO_PTHREAD_MUTEX_HEADER == \
73 "<cyg/posix/mutex.h>" }
76 compile -library=libextras.a startup.cxx
78 cdl_component CYGPKG_POSIX_PTHREAD_MUTEX {
80 display "POSIX pthread mutexes"
83 implements CYGINT_ISO_PMUTEXTYPES
84 implements CYGINT_ISO_PTHREAD_MUTEX
86 This component provides support for POSIX pthreads
91 cdl_option _POSIX_THREAD_PRIO_INHERIT {
92 display "POSIX mutex priority inheritance feature test macro"
95 requires CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT
97 This option defines the POSIX feature test macro for
98 supporting priority inheritance protocol in mutexes."
101 cdl_option _POSIX_THREAD_PRIO_PROTECT {
102 display "POSIX mutex priority ceiling feature test macro"
105 requires CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING
107 This option defines the POSIX feature test macro for
108 supporting priority ceiling protocol in mutexes."
112 # ----------------------------------------------------------------
113 # Scheduling component
115 cdl_component CYGPKG_POSIX_SCHED {
116 display "POSIX scheduling configuration"
119 implements CYGINT_ISO_SCHED_IMPL
120 requires CYGPKG_POSIX_CLOCKS
123 This component provides controls over scheduling in POSIX."
127 cdl_option _POSIX_PRIORITY_SCHEDULING {
128 display "POSIX priority scheduling feature test macro"
131 requires CYGSEM_KERNEL_SCHED_MLQUEUE
133 This option defines the POSIX feature test macro that
134 indicates that priority scheduling is present. This
135 should not be undefined."
139 # ----------------------------------------------------------------
142 cdl_component CYGPKG_POSIX_PTHREAD {
143 display "POSIX pthread configuration"
147 This component provides configuration controls for the
148 POSIX pthreads package."
155 # ----------------------------------------------------------------
158 cdl_option CYGPKG_POSIX_CLOCKS {
159 display "POSIX clocks"
162 implements CYGINT_ISO_POSIX_CLOCK_TYPES
163 implements CYGINT_ISO_POSIX_CLOCKS
164 implements CYGINT_ISO_POSIX_SLEEP
165 requires { CYGBLD_ISO_POSIX_CLOCK_TYPES_HEADER == \
166 "<cyg/posix/time.h>" }
167 requires { CYGBLD_ISO_POSIX_CLOCKS_HEADER == \
168 "<cyg/posix/time.h>" }
169 requires { CYGBLD_ISO_STRUCTTIMEVAL_HEADER == \
170 "<cyg/posix/sys/time.h>" }
171 requires CYGPKG_KERNEL
172 requires CYGVAR_KERNEL_COUNTERS_CLOCK
175 This component provides configuration controls for
176 the POSIX clocks and the sleep(), nanosleep() and
177 gettimeofday() functions."
183 # ----------------------------------------------------------------
186 cdl_option CYGPKG_POSIX_TIMERS {
187 display "POSIX timers"
190 implements CYGINT_ISO_POSIX_TIMER_TYPES
191 implements CYGINT_ISO_POSIX_TIMERS
192 implements CYGINT_ISO_POSIX_TIMER_OPS
193 requires { CYGBLD_ISO_POSIX_TIMER_TYPES_HEADER == \
194 "<cyg/posix/time.h>" }
195 requires { CYGBLD_ISO_POSIX_TIMERS_HEADER == \
196 "<cyg/posix/time.h>" }
197 requires CYGPKG_KERNEL
198 requires CYGVAR_KERNEL_COUNTERS_CLOCK
199 requires CYGPKG_POSIX_PTHREAD
200 requires CYGPKG_POSIX_SIGNALS
201 requires CYGINT_ISO_POSIX_CLOCKS
203 This component provides configuration controls for
207 # ----------------------------------------------------------------
208 # Semaphores component
210 cdl_option CYGPKG_POSIX_SEMAPHORES {
211 display "POSIX semaphores"
214 implements CYGINT_ISO_SEMAPHORES
215 requires { CYGBLD_ISO_SEMAPHORES_HEADER == \
216 "<cyg/posix/semaphore.h>" }
217 description "This component provides configuration controls for
223 # ----------------------------------------------------------------
224 # Message queues component
226 cdl_component CYGPKG_POSIX_MQUEUES {
227 display "POSIX message queues"
231 implements CYGINT_ISO_MQUEUE
232 requires CYGPKG_KERNEL
233 requires CYGINT_ISO_MALLOC
234 requires CYGINT_ISO_ERRNO
235 requires CYGINT_ISO_STRING_STRFUNCS
236 requires CYGINT_ISO_PTHREAD_MUTEX
237 requires CYGPKG_POSIX_CLOCKS
238 description "This component provides configuration controls for
239 POSIX message queues."
241 cdl_option CYGNUM_POSIX_MQUEUE_OPEN_MAX {
242 display "Maximum number of message queues"
245 legal_values 1 to 999999
248 cdl_option CYGIMP_POSIX_MQUEUE_VALIDATE_DESCRIPTOR {
249 display "Validate queue descriptors"
253 This option turns on checking that message queue descriptors
254 (of type mqd_t) passed into mq_* functions are valid. If so,
255 the functions will fail with EBADF, as POSIX 1003.1 mandates.
256 If this option is disabled, if an invalid descriptor is used,
257 random corruption may occur, or the system may crash. If
258 you are confident invalid descriptors will not be used,
259 you may wish to be disable this to save some per-instance
260 memory and execution time."
263 cdl_option CYGFUN_POSIX_MQUEUE_NOTIFY {
264 display "Allow empty queue notification"
266 requires CYGPKG_POSIX_SIGNALS
267 default_value CYGPKG_POSIX_SIGNALS
269 Enabling this option adds the function mq_notify() to the
270 API. Without it, some code and per-message queue descriptor
271 space is saved, as well as no longer requiring POSIX realtime
276 # ----------------------------------------------------------------
279 cdl_component CYGPKG_POSIX_SIGNALS {
280 display "POSIX signals configuration"
283 requires CYGPKG_KERNEL_EXCEPTIONS
284 requires CYGPKG_POSIX_PTHREAD
285 requires CYGPKG_POSIX_TIMERS
286 implements CYGINT_POSIX_REALTIME_SIGNALS
287 implements CYGINT_ISO_SIGSETJMP
288 requires { CYGBLD_ISO_SIGSETJMP_HEADER == \
289 "<cyg/posix/sigsetjmp.h>" }
290 implements CYGINT_ISO_SIGNAL_NUMBERS
291 implements CYGINT_ISO_SIGNAL_IMPL
292 requires { CYGBLD_ISO_SIGNAL_NUMBERS_HEADER == \
293 "<cyg/posix/signal.h>" }
294 requires { CYGBLD_ISO_SIGNAL_IMPL_HEADER == \
295 "<cyg/posix/signal.h>" }
297 This component provides configuration controls for
300 compile signal.cxx except.cxx
303 # ----------------------------------------------------------------
304 # uname structure component
306 cdl_component CYGPKG_POSIX_UTSNAME {
307 display "POSIX utsname configuration"
310 requires { CYGBLD_ISO_UTSNAME_HEADER == \
311 "<cyg/posix/utsname.h>" }
313 This component provides configuration controls for
314 the POSIX utsname structure and the uname() function."
316 cdl_option CYG_POSIX_UTSNAME_LENGTH {
317 display "Length of name strings in utsname structure"
320 legal_values 1 to 99999999
323 cdl_option CYG_POSIX_UTSNAME_NODENAME_LENGTH {
324 display "Length of nodename string in utsname structure"
326 default_value { CYG_POSIX_UTSNAME_LENGTH }
327 legal_values 1 to 99999999
332 # ----------------------------------------------------------------
335 cdl_option CYGPKG_POSIX_TESTS {
336 display "POSIX tests"
340 (CYGPKG_POSIX_PTHREAD ? "tests/pthread1 tests/pthread2 tests/pthread3 "
342 (CYGPKG_POSIX_PTHREAD_MUTEX ? "tests/pmutex3 " : "") .
343 (CYGPKG_POSIX_MQUEUES ? "tests/pmqueue1 tests/pmqueue2 " : "") .
344 (CYGPKG_POSIX_SIGNALS ? "tests/signal1 tests/signal2 tests/signal3 \
345 tests/sigsetjmp " : "") .
346 ((CYGPKG_POSIX_SIGNALS &&
347 CYGPKG_POSIX_TIMERS &&
348 CYGPKG_POSIX_SEMAPHORES) ? "tests/timer1 " : "") .
349 ((CYGPKG_POSIX_SIGNALS &&
350 CYGPKG_POSIX_TIMERS &&
351 CYGPKG_POSIX_PTHREAD &&
352 CYGPKG_POSIX_SEMAPHORES) ? "tests/tm_posix " : "")
355 This option specifies the set of tests for the POSIX package."
360 # ====================================================================