annotate packages/language/c/libm/current/include/pkgconf/libm.h @ 56:755351606154 ecos-sw-1999-12-01

Merge from eCos master repository on 1999-12-01-18:03:05-GMT
author jlarmour
date Wed, 01 Dec 1999 18:33:37 +0000
parents 443894e2e912
children c38311975d4f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_PKGCONF_LIBM_H
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 #define CYGONCE_PKGCONF_LIBM_H
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 // libm.h
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 // Configuration header for mathematical function library
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
8 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
9 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
10 //####COPYRIGHTBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
11 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
12 // -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
13 // The contents of this file are subject to the Cygnus eCos Public License
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
14 // Version 1.0 (the "License"); you may not use this file except in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
15 // compliance with the License. You may obtain a copy of the License at
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
16 // http://sourceware.cygnus.com/ecos
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
17 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
18 // Software distributed under the License is distributed on an "AS IS"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
19 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
20 // License for the specific language governing rights and limitations under
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
21 // the License.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
22 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
23 // The Original Code is eCos - Embedded Cygnus Operating System, released
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
24 // September 30, 1998.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
25 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
26 // The Initial Developer of the Original Code is Cygnus. Portions created
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
27 // by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved.
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
28 // -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
29 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
31 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
34 // Author(s): jlarmour
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
35 // Contributors: jlarmour
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 // Date: 1998-02-13
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 // Purpose: Configuration of the standard mathematical function library
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 // Description: Configuration header for mathematical function library
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 // Usage: #include <pkgconf/libm.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 // A NOTE ON COMPATIBILITY MODES
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 // This math library is capable of being operated in several different
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 // compatibility modes. These options deal solely with how errors are
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 // handled.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54 // There are 4 compatibility modes: ANSI/POSIX 1003.1; IEEE-754; X/Open
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55 // Portability Guide issue 3 (XPG3); and System V Interface Definition
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 // Edition 3.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 // In IEEE mode, the matherr() function (see below) is never called, no
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 // warning messages are printed on the stderr output stream, and errno is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 // never set.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 // In ANSI/POSIX mode, errno is set correctly, but matherr() is never
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 // called and no warning messages are printed on the stderr output stream.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 // In X/Open mode, errno is set correctly, matherr() is called, but no
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 // warning messages are printed on the stderr output stream.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 // In SVID mode, functions which overflow return a value "HUGE" (defined in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69 // math.h), which is the maximum single precision floating point value
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 // (as opposed to HUGE_VAL which is meant to stand for infinity). errno is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 // set correctly and matherr() is called. If matherr() returns 0, warning
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 // messages are printed on the stderr output stream for some errors.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 // The mode can be compiled-in as IEEE-only, or any one of the above
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 // methods settable at run-time. See the configuration options below for
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 // more.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 // MATHERR()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 // As said, in X/Open or SVID modes, the user can supply a function
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 // matherr() of the form:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 // int matherr( struct exception * );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 // where:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 // struct exception {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 // int type;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 // char *name;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 // double arg1, arg2, retval;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 // };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 // - type is the exception type and is one of:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 // DOMAIN - argument domain exception
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 // SING - argument singularity
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 // OVERFLOW - overflow range exception
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 // UNDERFLOW - underflow range exception
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99 // TLOSS - total loss of significance
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 // PLOSS - partial loss of significance
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 // - name is a string containing the name of the function
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 // - arg1 and arg2 are the arguments passed to the function
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104 // - retval is the default value that will be returned by the function, and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 // can be changed by matherr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 // matherr must have "C" linkage, not C++
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 // If matherr returns zero, or the user doesn't supply their own matherr,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 // then the following _usually_ happens in SVID mode:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 // If type is:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 // DOMAIN - 0.0 returned, errno=EDOM, and a message printed on stderr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 // SING - HUGE of appropriate sign is returned, errno=EDOM, and a
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 // message is printed on stderr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 // OVERFLOW - HUGE of appropriate sign is returned, and errno=ERANGE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 // UNDERFLOW - 0.0 is returned and errno=ERANGE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 // TLOSS - 0.0 is returned, errno=ERANGE, and a message is printed on
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 // stderr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 // PLOSS - The current implementation doesn't return this type
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 // X/Open mode is similar except that the message is not printed on stderr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 // and HUGE_VAL is used in place of HUGE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 // THREAD-SAFETY AND RE-ENTRANCY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 // With the appropriate configuration options set below, the math library
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 // is fully thread-safe if:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 // - Depending on the compatibility mode, the setting of the errno variable
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 // from the C library is thread-safe
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 // - Depending on the compatibility mode, sending error messages to the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 // stderr output stream using the C library fputs() function is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 // thread-safe
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 // - Depending on the compatibility mode, the user-supplied matherr()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 // function and anything it depends on are thread-safe
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 // In addition, with the exception of the gamma*() and lgamma*() functions,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 // the math library is re-entrant (and thus safe to use from interrupt
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144 // handlers) if the Math library is always in IEEE mode
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 // Also note that this math library assumes the hardware (or software
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149 // floating point emulation) supports IEEE-754 style arithmetic, 32-bit
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150 // 2's complement integer arithmetic, doubles are in 64-bit
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151 // IEEE-754 format.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 // INCLUDES
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158 // Include system configuration file to work out whether the Math library
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 // is to be included at all
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 #include <pkgconf/system.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 // We want to check if the kernel supports per-thread data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 #ifdef CYGPKG_KERNEL
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164 # include <pkgconf/kernel.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 /*
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169 {{CFG_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 cdl_package CYGPKG_LIBM {
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
171 display "Math library"
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172 description "ISO standard floating point mathematical library
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 containing many useful functions for mathematical
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 calculations."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 type boolean
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 requires CYGPKG_ERROR
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
177 doc ref/ecos-ref/the-iso-standard-c-and-math-libraries.html
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179 }}CFG_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183 // TYPE DEFINITIONS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 // Compatibility mode selector - required for default below
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 typedef enum {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188 CYGNUM_LIBM_COMPAT_UNINIT= 0, // Default state. DO NOT set it to this
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189 CYGNUM_LIBM_COMPAT_POSIX = 1, // ANSI/POSIX 1003.1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 CYGNUM_LIBM_COMPAT_IEEE = 2, // IEEE-754
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 CYGNUM_LIBM_COMPAT_XOPEN = 3, // X/OPEN Portability guide issue 3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 // (XPG3)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 CYGNUM_LIBM_COMPAT_SVID = 4 // System V Interface Definition 3rd
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194 // edition
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 } Cyg_libm_compat_t;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 // COMPATIBILITY-MODE RELATED CONFIGURATION OPTIONS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202 /*
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 {{CFG_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205 cdl_component CYGPKG_LIBM_COMPATIBILITY {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 display "Compatibility mode"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 description "These options deal with behaviour related to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 the various compatibility modes - POSIX, IEEE,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 X/OPEN and SVID."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 doc ref/ecos-ref/math-library-compatibility-modes.html
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211 type dummy
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 parent CYGPKG_LIBM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 cdl_option CYGSEM_LIBM_COMPAT_IEEE_ONLY {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 display "IEEE-only"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217 description "The math library can be hard-coded to only
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 behave in one compatibility mode - IEEE. This
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219 cannot be changed at run-time. IEEE mode is the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 most minimal of the compatibility modes, and so
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 this will best help code size and speed, as well
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 as omitting the code for other compatibility
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223 modes. If not defined, the math library can be
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224 set at run-time to any of the supported
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225 compatibility modes."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226 type radio
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 parent CYGPKG_LIBM_COMPATIBILITY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 cdl_component CYGPKG_LIBM_COMPATIBILITY_DEFAULT {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231 display "Default mode"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 description "If you want to have support for more than one
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 compatibility mode settable at run-time, rather
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 than hard-coded IEEE mode, this component lets
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 you choose which mode should be the default."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 type radio
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 parent CYGPKG_LIBM_COMPATIBILITY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238 requires CYGPKG_LIBC
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 cdl_option CYGNUM_LIBM_COMPATIBILITY_POSIX {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 display "POSIX"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243 description "This sets the default compatibility mode to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 POSIX"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245 type radio
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 parent CYGPKG_LIBM_COMPATIBILITY_DEFAULT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249 cdl_option CYGNUM_LIBM_COMPATIBILITY_IEEE {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 display "IEEE"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251 description "This sets the default compatibility mode to IEEE"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252 type radio
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 parent CYGPKG_LIBM_COMPATIBILITY_DEFAULT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256 cdl_option CYGNUM_LIBM_COMPATIBILITY_XOPEN {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 display "X/OPEN"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 description "This sets the default compatibility mode to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 X/OPEN"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260 type radio
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261 parent CYGPKG_LIBM_COMPATIBILITY_DEFAULT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 cdl_option CYGNUM_LIBM_COMPATIBILITY_SVID {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265 display "SVID"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 description "This sets the default compatibility mode to SVID"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 type radio
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 parent CYGPKG_LIBM_COMPATIBILITY_DEFAULT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271 cdl_option CYGFUN_LIBM_SVID3_scalb {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272 display "SVID3-style scalb()"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 description "SVID3 defined the scalb() function as double
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274 scalb(double, double) rather than double
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275 scalb(double, int) which is used by IBM, DEC, and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276 probably others. Enabling this option chooses
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 the (double, double) version. Note there is a
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 function double scalbn(double, int) which is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 unaffected by this choice."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 type boolean
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 parent CYGPKG_LIBM_COMPATIBILITY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
282 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 cdl_option CYGSYM_LIBM_NO_XOPEN_SVID_NAMESPACE_POLLUTION {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 display "Reduce namespace pollution"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
286 description "If you do not want to use either the X/Open or
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
287 SVID3 compatibility modes, you may want to define
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
288 this option to reduce the chance of namespace
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 pollution. This is particularly likely to occur
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 here as these standards define symbols with
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291 names that often appear in applications, such as
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
292 exception, DOMAIN, OVERFLOW, etc. If your
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
293 application also used these names, it may cause
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294 problems."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295 type boolean
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
296 parent CYGPKG_LIBM_COMPATIBILITY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
297 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
298
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 cdl_option CYGSEM_LIBM_USE_STDERR {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300 display "Output to stderr for math errors"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
301 description "The SVID3 standard says that error
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
302 messages should be output on the stderr console
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
303 output stream. This option allows this ability
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304 to be explicitly controlled. However, this still
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
305 only has an effect in SVID3 compatibility mode."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306 type boolean
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
307 requires !CYGSEM_LIBM_COMPAT_IEEE_ONLY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308 requires CYGPKG_LIBC_STDIO
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 parent CYGPKG_LIBM_COMPATIBILITY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
312 }}CFG_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
313 */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
314
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
315 #undef CYGSEM_LIBM_COMPAT_IEEE_ONLY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
316 #define CYGPKG_LIBM_COMPATIBILITY_DEFAULT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
317
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
318 #ifdef CYGPKG_LIBM_COMPATIBILITY_DEFAULT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
319 # ifndef CYGPKG_LIBC
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
320 # error You must include the libc package if enabling \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
321 CYGPKG_LIBM_COMPATIBILITY_DEFAULT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
322 # endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
323 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
324
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
325 #define CYGNUM_LIBM_COMPATIBILITY_POSIX
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
326 #undef CYGNUM_LIBM_COMPATIBILITY_IEEE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
327 #undef CYGNUM_LIBM_COMPATIBILITY_XOPEN
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
328 #undef CYGNUM_LIBM_COMPATIBILITY_SVID
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
329
56
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
330 #undef CYGNUM_LIBM_COMPAT_DEFAULT /* this is for permtest to find! */
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
331
56
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
332 #ifndef CYGNUM_LIBM_COMPAT_DEFAULT
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
333 # if defined(CYGPKG_LIBM_COMPATIBILITY_DEFAULT)
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
334 # if defined(CYGNUM_LIBM_COMPATIBILITY_POSIX)
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
335 # define CYGNUM_LIBM_COMPAT_DEFAULT CYGNUM_LIBM_COMPAT_POSIX
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
336 # elif defined(CYGNUM_LIBM_COMPATIBILITY_IEEE)
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
337 # define CYGNUM_LIBM_COMPAT_DEFAULT CYGNUM_LIBM_COMPAT_IEEE
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
338 # elif defined(CYGNUM_LIBM_COMPATIBILITY_XOPEN)
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
339 # define CYGNUM_LIBM_COMPAT_DEFAULT CYGNUM_LIBM_COMPAT_XOPEN
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
340 # elif defined(CYGNUM_LIBM_COMPATIBILITY_SVID)
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
341 # define CYGNUM_LIBM_COMPAT_DEFAULT CYGNUM_LIBM_COMPAT_SVID
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
342 # else
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
343 # error Configuration broken - no default mode set
755351606154 Merge from eCos master repository on 1999-12-01-18:03:05-GMT
jlarmour
parents: 2
diff changeset
344 # endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
345 # endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
346 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
347
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
348 #define CYGFUN_LIBM_SVID3_scalb
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
349
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
350 #undef CYGSYM_LIBM_NO_XOPEN_SVID_NAMESPACE_POLLUTION
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
351
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
352 #undef CYGSEM_LIBM_USE_STDERR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
353
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
354 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
355 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
356 // THREAD-SAFETY CONFIGURATION OPTIONS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
357
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
358 /*
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
359 {{CFG_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
360
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
361 cdl_component CYGPKG_LIBM_THREAD_SAFETY {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
362 display "Thread safety"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
363 description "This option controls whether the C library has
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
364 support for thread safe operation in general.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
365 This requires eCos kernel support for per-thread
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
366 data, and adjustment of the stack limit."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
367 type dummy
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
368 parent CYGPKG_LIBM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
369 doc ref/ecos-ref/c-and-math-library-overview-thread-safety.html
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
370 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
371
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
372 cdl_option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
373 display "Compatibility mode setting"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
374 description "This option makes the setting of the compatiblity
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
375 mode be a per-thread property. This directly
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
376 implies that it also becomes thread-safe."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
377 requires !CYGSEM_LIBM_COMPAT_IEEE_ONLY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
378 requires CYGVAR_KERNEL_THREADS_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
379 parent CYGPKG_LIBM_THREAD_SAFETY
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
380 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
381 }}CFG_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383 */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
385
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
386 #ifndef CYGSEM_LIBM_COMPAT_IEEE_ONLY // irrelevant if mode is constant
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
387 #undef CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
389
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
390
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
391 #if ( defined(CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE) && \
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
392 !defined(CYGVAR_KERNEL_THREADS_DATA) )
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
393 # error The kernel must have thread-specific data \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
394 (CYGVAR_KERNEL_THREADS_DATA) turned on for a thread-safe math library
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
395 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
396
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
397 //========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
398 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
399 // TRACING OPTIONS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
400
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
401 /*
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
402 {{CFG_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
403
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
404 cdl_component CYGPKG_LIBM_TRACE {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
405 display "Tracing output levels in Math library"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
406 description "Tracing support is useful for debugging. Some
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
407 Math library modules can be configured with
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
408 different levels of tracing verbosity. These
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
409 levels can be configured here."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
410 type boolean
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
411 requires CYGDBG_USE_TRACING
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
412 parent CYGPKG_LIBM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
413 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
414
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
415 cdl_option CYGNUM_LIBM_COMPATMODE_TRACE_LEVEL {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
416 display "Compatibility mode get/set"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
417 description "Trace level for debugging the getting and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
418 setting of the compatibility mode when it is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
419 configured to be thread-safe."
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
420 type count
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
421 legal_values 0 to 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
422 requires CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
423 parent CYGPKG_LIBM_TRACE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
424 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
425 }}CFG_DATA
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
426
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
427 */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
428
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
429 #undef CYGPKG_LIBM_TRACE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
430
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
431 #ifdef CYGPKG_LIBM_TRACE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
432
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
433 #define CYGNUM_LIBM_COMPATMODE_TRACE_LEVEL 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
434
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
435
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
436 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
437
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
438
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
439 #endif // CYGONCE_PKGCONF_LIBM_H multiple inclusion protection
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
440
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
441 // EOF libm.h