]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/isoinfra/v2_0/include/stdlib.h
Initial revision
[karo-tx-redboot.git] / packages / isoinfra / v2_0 / include / stdlib.h
1 #ifndef CYGONCE_ISO_STDLIB_H
2 #define CYGONCE_ISO_STDLIB_H
3 /*========================================================================
4 //
5 //      stdlib.h
6 //
7 //      ISO standard library functions
8 //
9 //========================================================================
10 //####ECOSGPLCOPYRIGHTBEGIN####
11 // -------------------------------------------
12 // This file is part of eCos, the Embedded Configurable Operating System.
13 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
14 //
15 // eCos is free software; you can redistribute it and/or modify it under
16 // the terms of the GNU General Public License as published by the Free
17 // Software Foundation; either version 2 or (at your option) any later version.
18 //
19 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
20 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
22 // for more details.
23 //
24 // You should have received a copy of the GNU General Public License along
25 // with eCos; if not, write to the Free Software Foundation, Inc.,
26 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
27 //
28 // As a special exception, if other files instantiate templates or use macros
29 // or inline functions from this file, or you compile this file and link it
30 // with other works to produce a work based on this file, this file does not
31 // by itself cause the resulting work to be covered by the GNU General Public
32 // License. However the source code for this file must still be made available
33 // in accordance with section (3) of the GNU General Public License.
34 //
35 // This exception does not invalidate any other reasons why a work based on
36 // this file might be covered by the GNU General Public License.
37 //
38 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
39 // at http://sources.redhat.com/ecos/ecos-license/
40 // -------------------------------------------
41 //####ECOSGPLCOPYRIGHTEND####
42 //========================================================================
43 //#####DESCRIPTIONBEGIN####
44 //
45 // Author(s):     jlarmour
46 // Contributors:  
47 // Date:          2000-04-14
48 // Purpose:       This file provides the stdlib functions required by 
49 //                ISO C and POSIX 1003.1.
50 // Description:   The real contents of this file get set from the
51 //                configuration (set by the implementation)
52 // Usage:         #include <stdlib.h>
53 //
54 //####DESCRIPTIONEND####
55 //
56 //======================================================================
57 */
58
59 /* CONFIGURATION */
60
61 #include <pkgconf/isoinfra.h>          /* Configuration header */
62
63 /* INCLUDES */
64
65 /* This is the "standard" way to get NULL, wchar_t and size_t from stddef.h,
66  * which is the canonical location of the definitions.
67  */
68 #define __need_NULL
69 #define __need_size_t
70 #define __need_wchar_t
71 #include <stddef.h>
72
73 #include <cyg/infra/cyg_type.h>     /* For CYGBLD_ATTRIB_NORET etc. */
74
75 /*==========================================================================*/
76
77 #if CYGINT_ISO_STDLIB_STRCONV
78 # ifdef CYGBLD_ISO_STDLIB_STRCONV_HEADER
79 #  include CYGBLD_ISO_STDLIB_STRCONV_HEADER
80 # else
81
82 /* ISO C 7.10.1 - String conversion functions */
83
84 #ifdef __cplusplus
85 extern "C" {
86 #endif
87
88 extern int
89 atoi( const char * /* int_str */ );
90
91 extern long
92 atol( const char * /* long_str */ );
93
94 extern long
95 strtol( const char * /* long_str */, char ** /* endptr */,
96         int /* base */ );
97
98 extern unsigned long
99 strtoul( const char * /* ulong_str */, char ** /* endptr */,
100          int /* base */ );
101
102 #ifdef __cplusplus
103 } /* extern "C" */
104 #endif 
105
106
107 # endif
108 #endif
109
110 /*==========================================================================*/
111
112 #if CYGINT_ISO_STDLIB_STRCONV_FLOAT
113 # ifdef CYGBLD_ISO_STDLIB_STRCONV_FLOAT_HEADER
114 #  include CYGBLD_ISO_STDLIB_STRCONV_FLOAT_HEADER
115 # else
116
117 /* ISO C 7.10.1 - String conversion functions */
118
119 #ifdef __cplusplus
120 extern "C" {
121 #endif
122
123 extern double
124 atof( const char * /* double_str */ );
125
126 extern double
127 strtod( const char * /* double_str */, char ** /* endptr */ );
128
129 #ifdef __cplusplus
130 } /* extern "C" */
131 #endif 
132
133
134 # endif
135 #endif
136
137 /*==========================================================================*/
138
139 #if CYGINT_ISO_RAND
140 # ifdef CYGBLD_ISO_RAND_HEADER
141 #  include CYGBLD_ISO_RAND_HEADER
142 # else
143
144 /* ISO C 7.10.2 - Pseudo-random sequence generation functions */
145
146 /* Maximum value returned by rand().  */
147 #define RAND_MAX  2147483647
148
149 #ifdef __cplusplus
150 extern "C" {
151 #endif
152
153 extern int
154 rand( void );
155
156 extern void
157 srand( unsigned int /* seed */ );
158
159 /* POSIX 1003.1 section 8.3.8 rand_r() */
160 extern int
161 rand_r( unsigned int * /* seed */ );
162
163 #ifdef __cplusplus
164 } /* extern "C" */
165 #endif 
166
167 # endif
168 #endif
169
170 /*==========================================================================*/
171
172 #if CYGINT_ISO_MALLOC
173 # ifdef CYGBLD_ISO_MALLOC_HEADER
174 #  include CYGBLD_ISO_MALLOC_HEADER
175 # else
176
177 /* ISO C 7.10.3 - Memory management functions */
178
179 #ifdef __cplusplus
180 extern "C" {
181 #endif
182
183 extern void *
184 calloc( size_t /* num_objects */, size_t /* object_size */ );
185
186 extern void
187 free( void * /* ptr */ );
188
189 extern void *
190 malloc( size_t /* size */ );
191
192 extern void *
193 realloc( void * /* ptr */, size_t /* size */ );
194
195 #ifdef __cplusplus
196 } /* extern "C" */
197 #endif 
198
199 # endif
200 #endif
201
202 /*==========================================================================*/
203
204 #if CYGINT_ISO_MALLINFO
205 # ifdef CYGBLD_ISO_MALLINFO_HEADER
206 #  include CYGBLD_ISO_MALLINFO_HEADER
207 # else
208
209 #ifdef __cplusplus
210 extern "C" {
211 #endif
212
213 /* SVID2/XPG mallinfo structure */
214
215 struct mallinfo {
216     int arena;    /* total size of memory arena */
217     int ordblks;  /* number of ordinary memory blocks */
218     int smblks;   /* number of small memory blocks */
219     int hblks;    /* number of mmapped regions */
220     int hblkhd;   /* total space in mmapped regions */
221     int usmblks;  /* space used by small memory blocks */
222     int fsmblks;  /* space available for small memory blocks */
223     int uordblks; /* space used by ordinary memory blocks */
224     int fordblks; /* space free for ordinary blocks */
225     int keepcost; /* top-most, releasable (via malloc_trim) space */
226     int maxfree;  /* (NON-STANDARD EXTENSION) size of largest free block */
227 };
228
229 extern struct mallinfo
230 mallinfo( void );
231
232 #ifdef __cplusplus
233 } /* extern "C" */
234 #endif 
235
236 # endif
237 #endif
238
239 /*==========================================================================*/
240
241 #if CYGINT_ISO_EXIT
242 # ifdef CYGBLD_ISO_EXIT_HEADER
243 #  include CYGBLD_ISO_EXIT_HEADER
244 # else
245
246 /* ISO C 7.10.4 - Communication with the environment */
247
248 /* codes to pass to exit() */
249
250 /* Successful exit status - must be zero (POSIX 1003.1 8.1) */
251 #define EXIT_SUCCESS  0
252 /* Failing exit status - must be non-zero (POSIX 1003.1 8.1) */
253 #define EXIT_FAILURE  1
254
255 #ifdef __cplusplus
256 extern "C" {
257 #endif
258
259 /* Type of function used by atexit() */
260 typedef void (*__atexit_fn_t)( void );
261
262 extern void
263 abort( void ) CYGBLD_ATTRIB_NORET;
264
265 extern int
266 atexit( __atexit_fn_t /* func_to_register */ );
267
268 extern void
269 exit( int /* status */ ) CYGBLD_ATTRIB_NORET;
270
271 /* POSIX 1003.1 section 3.2.2 "Terminate a process" */
272
273 //@@@ FIXME unistd.h
274 extern void
275 _exit( int /* status */ ) CYGBLD_ATTRIB_NORET;
276
277 #ifdef __cplusplus
278 } /* extern "C" */
279 #endif 
280
281 # endif
282 #endif
283
284 /*==========================================================================*/
285
286 #if CYGINT_ISO_STDLIB_ENVIRON
287 # ifdef CYGBLD_ISO_STDLIB_ENVIRON_HEADER
288 #  include CYGBLD_ISO_STDLIB_ENVIRON_HEADER
289 # else
290
291 /* ISO C 7.10.4 - Communication with the environment */
292
293 #ifdef __cplusplus
294 extern "C" {
295 #endif
296
297 #ifndef _POSIX_SOURCE
298
299 extern char **environ;   /* standard definition of environ */
300
301 #endif
302     
303 extern char *
304 getenv( const char * /* name */ );
305
306 #ifdef __cplusplus
307 } /* extern "C" */
308 #endif 
309
310 # endif
311 #endif
312
313 /*==========================================================================*/
314
315 #if CYGINT_ISO_STDLIB_SYSTEM
316 # ifdef CYGBLD_ISO_STDLIB_SYSTEM_HEADER
317 #  include CYGBLD_ISO_STDLIB_SYSTEM_HEADER
318 # else
319
320 /* ISO C 7.10.4 - Communication with the environment */
321
322 #ifdef __cplusplus
323 extern "C" {
324 #endif
325
326 extern int
327 system( const char * /* command */ );
328
329 #ifdef __cplusplus
330 } /* extern "C" */
331 #endif 
332
333 # endif
334 #endif
335
336 /*==========================================================================*/
337
338 #if CYGINT_ISO_BSEARCH
339 # ifdef CYGBLD_ISO_BSEARCH_HEADER
340 #  include CYGBLD_ISO_BSEARCH_HEADER
341 # else
342
343 /* ISO C 7.10.5 - Searching and sorting utilities */
344
345 #ifdef __cplusplus
346 extern "C" {
347 #endif
348
349 typedef int (*__bsearch_comparison_fn_t)(const void * /* object1 */,
350                                          const void * /* object2 */);
351
352 extern void *
353 bsearch( const void * /* search_key */, const void * /* first_object */,
354          size_t /* num_objects */, size_t /* object_size */,
355          __bsearch_comparison_fn_t /* comparison_fn */ );
356
357 #ifdef __cplusplus
358 } /* extern "C" */
359 #endif 
360
361 # endif
362 #endif
363
364 /*==========================================================================*/
365
366 #if CYGINT_ISO_QSORT
367 # ifdef CYGBLD_ISO_QSORT_HEADER
368 #  include CYGBLD_ISO_QSORT_HEADER
369 # else
370
371 /* ISO C 7.10.5 - Searching and sorting utilities */
372
373 #ifdef __cplusplus
374 extern "C" {
375 #endif
376
377 typedef int (*__qsort_comparison_fn_t)(const void * /* object1 */,
378                                        const void * /* object2 */);
379
380 extern void
381 qsort( void * /* first_object */, size_t /* num_objects */,
382        size_t /* object_size */, __qsort_comparison_fn_t /* comparison_fn */ );
383
384 #ifdef __cplusplus
385 } /* extern "C" */
386 #endif 
387
388 # endif
389 #endif
390
391 /*======================================================================*/
392
393 #if CYGINT_ISO_ABS
394 # ifdef CYGBLD_ISO_STDLIB_ABS_HEADER
395 #  include CYGBLD_ISO_STDLIB_ABS_HEADER
396 # else
397
398 /* TYPE DEFINITIONS */
399
400 /* ISO C 7.10 and 7.10.6 - Integer Arithmetic Functions */
401
402 #ifdef __cplusplus
403 extern "C" {
404 #endif
405
406 extern int
407 abs( int /* val */ ) __attribute__((__const__));
408
409 extern long
410 labs( long /* val */ ) __attribute__((__const__));
411
412 #ifdef __cplusplus
413 } /* extern "C" */
414 #endif 
415
416 # endif
417 #endif
418
419 /*======================================================================*/
420
421 #if CYGINT_ISO_DIV
422 # ifdef CYGBLD_ISO_STDLIB_DIV_HEADER
423 #  include CYGBLD_ISO_STDLIB_DIV_HEADER
424 # else
425
426 /* ISO C 7.10 and 7.10.6 - Integer Arithmetic Functions */
427
428 /* return type of the div() function */
429
430 typedef struct {
431     int quot;      /* quotient  */
432     int rem;       /* remainder */
433 } div_t;
434
435
436 /* return type of the ldiv() function */
437
438 typedef struct {
439     long quot;     /* quotient  */
440     long rem;      /* remainder */
441 } ldiv_t;
442
443 #ifdef __cplusplus
444 extern "C" {
445 #endif
446
447 extern div_t
448 div( int /* numerator */, int /* denominator */ ) __attribute__((__const__));
449
450 extern ldiv_t
451 ldiv( long /* numerator */, long /* denominator */ ) __attribute__((__const__));
452
453 #ifdef __cplusplus
454 } /* extern "C" */
455 #endif 
456
457 # endif
458 #endif
459
460 /*==========================================================================*/
461
462 /* Maximum number of bytes in a multibyte character for the current locale */
463
464 #ifdef CYGBLD_ISO_STDLIB_MB_CUR_MAX_HEADER
465 # include CYGBLD_ISO_STDLIB_MB_CUR_MAX_HEADER
466 #else
467 # define MB_CUR_MAX 1
468 #endif
469
470 #if CYGINT_ISO_STDLIB_MULTIBYTE
471 # ifdef CYGBLD_ISO_STDLIB_MULTIBYTE_HEADER
472 #  include CYGBLD_ISO_STDLIB_MULTIBYTE_HEADER
473 # else
474
475 /* ISO C 7.10.7 - Multibyte character functions */
476
477
478 #ifdef __cplusplus
479 extern "C" {
480 #endif
481
482 extern int
483 mblen( const char * /* s */, size_t /* n */ );
484
485 extern int
486 mbtowc( wchar_t * /* pwc */, const char * /* s */, size_t /* n */ );
487
488 extern int
489 wctomb( char * /* s */, wchar_t /* wchar */ );
490
491 extern size_t
492 mbstowcs( wchar_t * /* pwcs */, const char * /* s */, size_t /* n */ );
493
494 extern size_t
495 wcstombs( char * /* s */, const wchar_t * /* pwcs */, size_t /* n */ );
496
497 #ifdef __cplusplus
498 } /* extern "C" */
499 #endif 
500
501 # endif
502 #endif
503
504 /*==========================================================================*/
505
506 #endif /* CYGONCE_ISO_STDLIB_H multiple inclusion protection */
507
508 /* EOF stdlib.h */