home *** CD-ROM | disk | FTP | other *** search
- /*
- * stdlib.h --
- *
- * Declares facilities exported by the "stdlib" portion of
- * the C library.
- *
- * Copyright 1988 Regents of the University of California
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- * $Header: /sprite/src/lib/include/RCS/stdlib.h,v 1.12 90/01/06 13:45:29 rab Exp $ SPRITE (Berkeley)
- */
-
- #ifndef _STDLIB
- #define _STDLIB
-
- #define EXIT_SUCCESS 0
- #define EXIT_FAILURE 1
-
- /*
- *----------------------------
- * String conversion routines:
- *----------------------------
- */
-
- extern double atof();
- extern int atoi();
- extern long int atol();
- extern double strtod();
- extern long int strtol();
- extern unsigned long strtoul();
-
- /*
- *------------------
- * Memory allocator:
- *------------------
- */
-
- extern char * alloca();
- extern char * calloc();
- extern char * malloc();
- extern char * realloc();
- extern void Mem_Bin();
- extern char * Mem_CallerPC();
- extern void Mem_DumpTrace();
- extern void Mem_PrintConfig();
- extern void Mem_PrintInUse();
- extern void Mem_PrintStats();
- extern void Mem_PrintStatsInt();
- extern void Mem_SetPrintProc();
- extern void Mem_SetTraceSizes();
- extern int Mem_Size();
-
- /*
- * The mips compiler cannot handle some coercions on the left hand side
- */
- #if defined(KERNEL) && !defined(mips)
- extern _free();
-
- #ifdef lint
- #define free(ptr) _free(ptr)
- #else
- #define free(ptr) {_free(ptr); (ptr) = (char *) NIL; }
- #endif /* lint */
-
- #else
- extern free();
- #endif /* KERNEL */
-
- /*
- * Structure used to set up memory allocation traces.
- */
-
- typedef struct {
- int size; /* Size of block to trace. */
- int flags; /* Flags defined below */
- } Mem_TraceInfo;
-
- /*
- * Flags to determine what type of tracing to do.
- *
- * MEM_PRINT_TRACE A trace record will be printed each time that
- * an object of this size is alloc'd or freed.
- * MEM_STORE_TRACE The number of blocks in use by each caller
- * up to a predefined maximum number of callers
- * is kept in a trace array .
- * MEM_DONT_USE_ORIG_SIZE Don't use the original size for tracing, but use
- * the modified size used by malloc.
- * MEM_TRACE_NOT_INIT The trace records stored for MEM_STORE_TRACE
- * have not been initialized yet.
- */
-
- #define MEM_PRINT_TRACE 0x1
- #define MEM_STORE_TRACE 0x2
- #define MEM_DONT_USE_ORIG_SIZE 0x4
- #define MEM_TRACE_NOT_INIT 0x8
-
- extern int mem_SmallMinNum;
- extern int mem_LargeMinNum;
- extern int mem_LargeMaxSize;
-
- /*
- * Statistics counters; only incremented when tracing is enabled.
- */
-
- extern int mem_NumAllocs;
- extern int mem_NumFrees;
-
- /*
- *----------------------------------------------------------------
- * Additional integer math routines, plus structures for returning
- * results from them:
- *----------------------------------------------------------------
- */
-
- typedef struct div_t {
- int quot;
- int rem;
- } div_t;
-
- typedef struct {
- long int quot;
- long int rem;
- } ldiv_t;
-
- extern int abs();
- extern div_t div();
- extern long int labs();
- extern ldiv_t ldiv();
-
- /*
- *-----------------------------------
- * Miscellaneous additional routines:
- *-----------------------------------
- */
-
- extern void abort();
- extern int atexit();
- extern char * bsearch();
- extern exit();
- extern char * getenv();
- extern void qsort();
- extern int rand();
- extern long random();
- extern void setenv();
- extern srand();
- extern srandom();
- extern int system();
-
- #endif /* _STDLIB */
-