comparison packages/language/c/libc/current/cdl/stdlib.cdl @ 76:435cced73e2f ecos-v1_3_1-release

eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
author jlarmour
date Tue, 28 Mar 2000 14:10:45 +0000
parents
children
comparison
equal deleted inserted replaced
75:41bf073c0c32 76:435cced73e2f
1 # ====================================================================
2 #
3 # stdlib.cdl
4 #
5 # C library stdlib related configuration data
6 #
7 # ====================================================================
8 #####COPYRIGHTBEGIN####
9 #
10 # -------------------------------------------
11 # The contents of this file are subject to the Red Hat eCos Public License
12 # Version 1.1 (the "License"); you may not use this file except in
13 # compliance with the License. You may obtain a copy of the License at
14 # http://www.redhat.com/
15 #
16 # Software distributed under the License is distributed on an "AS IS"
17 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
18 # License for the specific language governing rights and limitations under
19 # the License.
20 #
21 # The Original Code is eCos - Embedded Configurable Operating System,
22 # released September 30, 1998.
23 #
24 # The Initial Developer of the Original Code is Red Hat.
25 # Portions created by Red Hat are
26 # Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
27 # All Rights Reserved.
28 # -------------------------------------------
29 #
30 #####COPYRIGHTEND####
31 # ====================================================================
32 ######DESCRIPTIONBEGIN####
33 #
34 # Author(s): jskov
35 # Original data: jlarmour
36 # Contributors:
37 # Date: 1999-07-06
38 #
39 #####DESCRIPTIONEND####
40 #
41 # ====================================================================
42
43 cdl_option CYGIMP_LIBC_STDLIB_INLINES {
44 display "Inline versions of <stdlib.h> functions"
45 default_value 1
46 description "
47 This option chooses whether some of the
48 particularly simple standard utility functions
49 from <stdlib.h> are available as inline
50 functions. This may improve performance, and as
51 the functions are small, may even improve code
52 size."
53 }
54
55 cdl_component CYGPKG_LIBC_RAND {
56 display "Random number generation"
57 flavor none
58 description "
59 These options control the behaviour of the
60 functions rand(), srand() and rand_r()"
61
62 cdl_option CYGSEM_LIBC_PER_THREAD_RAND {
63 display "Per-thread random seed"
64 requires CYGVAR_KERNEL_THREADS_DATA
65 default_value 0
66 description "
67 This option controls whether the pseudo-random
68 number generation functions rand() and srand()
69 have their state recorded on a per-thread
70 basis rather than global. If this option is
71 disabled, some per-thread space can be saved.
72 Note there is also a POSIX-standard rand_r()
73 function to achieve a similar effect with user
74 support. Enabling this option will use one slot
75 of kernel per-thread data. You should ensure you
76 have enough slots configured for all your
77 per-thread data."
78 }
79
80 cdl_option CYGNUM_LIBC_RAND_SEED {
81 display "Random number seed"
82 flavor data
83 legal_values 0 to 0x7fffffff
84 default_value 1
85 description "
86 This selects the initial random number seed for
87 rand()'s pseudo-random number generator. For
88 strict ISO standard compliance, this should be 1,
89 as per section 7.10.2.2 of the standard."
90 }
91
92 cdl_option CYGNUM_LIBC_RAND_TRACE_LEVEL {
93 display "Tracing level"
94 flavor data
95 legal_values 0 to 1
96 default_value 0
97 description "
98 Trace verbosity level for debugging the rand(),
99 srand() and rand_r() functions. Increase this
100 value to get additional trace output."
101 }
102
103 cdl_interface CYGINT_LIBC_RAND {
104 requires 1 == CYGINT_LIBC_RAND
105 }
106
107 cdl_option CYGIMP_LIBC_RAND_SIMPLEST {
108 display "Simplest implementation"
109 flavor bool
110 default_value 0
111 implements CYGINT_LIBC_RAND
112 description "
113 This provides a very simple implementation of rand()
114 that does not perform well with randomness in the
115 lower significant bits. However it is exceptionally
116 fast. It uses the sample algorithm from the ISO C
117 standard itself."
118 }
119
120 cdl_option CYGIMP_LIBC_RAND_SIMPLE1 {
121 display "Simple implementation #1"
122 flavor bool
123 default_value 1
124 implements CYGINT_LIBC_RAND
125 description "
126 This provides a very simple implementation of rand()
127 based on the simplest implementation above. However
128 it does try to work around the lack of randomness
129 in the lower significant bits, at the expense of a
130 little speed."
131 }
132
133 cdl_option CYGIMP_LIBC_RAND_KNUTH1 {
134 display "Knuth implementation #1"
135 flavor bool
136 default_value 0
137 implements CYGINT_LIBC_RAND
138 description "
139 This implements a slightly more complex algorithm
140 published in Donald E. Knuth's Art of Computer
141 Programming Vol.2 section 3.6 (p.185 in the 3rd ed.).
142 This produces better random numbers than the
143 simplest approach but is slower."
144 }
145 }
146
147 cdl_component CYGPKG_LIBC_MALLOC {
148 display "Support for dynamic memory allocation"
149 flavor bool
150 requires CYGPKG_KERNEL
151 default_value 1
152 description "
153 This enables support for dynamic memory
154 allocation as supplied by the functions malloc(),
155 free(), calloc() and realloc(). As these
156 functions are often used, but can have quite an
157 overhead, disabling them here can ensure they
158 cannot even be used accidentally when static
159 allocation is preferred."
160
161
162 cdl_option CYGNUM_LIBC_MALLOC_MEMPOOL_SIZE {
163 display "Size of the dynamic memory pool in bytes"
164 flavor data
165 legal_values 32 to 0x7fffffff
166 default_value 16384
167 description "
168 At this stage, dynamic memory allocation by
169 malloc() and calloc() must be from a fixed-size,
170 contiguous memory pool (note here that it is the
171 pool that is of a fixed size, but malloc() is still
172 able to allocate variable sized chunks of memory
173 from it). This option is the size
174 of that pool, in bytes. Note that not all of
175 this is available for programs to
176 use - some is needed for internal information
177 about memory regions, and some may be lost to
178 ensure that memory allocation only returns
179 memory aligned on word (or double word)
180 boundaries - a very common architecture
181 constraint."
182 }
183
184 cdl_option CYGIMP_LIBC_MALLOC_CXX_DELETE_CALLS_FREE {
185 display "Support for C++ delete operator"
186 default_value 0
187 description "
188 C++ new and delete operators can call
189 the C library's malloc() and free() implicitly.
190 If this is what is required, enable this option.
191 However, if enabled, the dynamic memory allocation
192 code is always linked in to the application,
193 even if it is not explicitly called and new/delete
194 are not used.
195 This increases code and data size needlessly."
196 }
197 }
198 cdl_option CYGFUN_LIBC_strtod {
199 display "Provides strtod() and atof()"
200 requires CYGPKG_LIBM
201 default_value 1
202 description "
203 This option allows use of the utility function
204 strtod() (and consequently atof()) to convert
205 from string to double precision floating point
206 numbers. Disabling this option removes the
207 dependency on the math library package."
208 }
209
210 cdl_option CYGNUM_LIBC_BSEARCH_TRACE_LEVEL {
211 display "bsearch() tracing level"
212 flavor data
213 legal_values 0 to 1
214 default_value 0
215 description "
216 Trace verbosity level for debugging the <stdlib.h>
217 binary search function bsearch(). Increase this
218 value to get additional trace output."
219 }
220
221 cdl_option CYGNUM_LIBC_QSORT_TRACE_LEVEL {
222 display "qsort() tracing level"
223 flavor data
224 legal_values 0 to 1
225 default_value 0
226 description "
227 Trace verbosity level for debugging the <stdlib.h>
228 quicksort function qsort(). Increase this value
229 to get additional trace output."
230 }