Annotation of qemu/roms/ipxe/src/include/stdlib.h, revision 1.1

1.1     ! root        1: #ifndef STDLIB_H
        !             2: #define STDLIB_H
        !             3: 
        !             4: FILE_LICENCE ( GPL2_OR_LATER );
        !             5: 
        !             6: #include <stdint.h>
        !             7: #include <assert.h>
        !             8: #include <ctype.h>
        !             9: 
        !            10: /*****************************************************************************
        !            11:  *
        !            12:  * Numeric parsing
        !            13:  *
        !            14:  ****************************************************************************
        !            15:  */
        !            16: 
        !            17: static inline int strtoul_base ( const char **pp, int base )
        !            18: {
        !            19:        const char *p = *pp;
        !            20: 
        !            21:        while ( isspace ( *p ) )
        !            22:                p++;
        !            23: 
        !            24:        if ( base == 0 ) {
        !            25:                base = 10;
        !            26:                if ( *p == '0' ) {
        !            27:                        p++;
        !            28:                        base = 8;
        !            29:                        if ( ( *p | 0x20 ) == 'x' ) {
        !            30:                                p++;
        !            31:                                base = 16;
        !            32:                        }
        !            33:                }
        !            34:        }
        !            35: 
        !            36:        *pp = p;
        !            37: 
        !            38:        return base;
        !            39: }
        !            40: 
        !            41: static inline unsigned int strtoul_charval ( unsigned int charval )
        !            42: {
        !            43:        if ( charval >= 'a' ) {
        !            44:                charval = ( charval - 'a' + 10 );
        !            45:        } else if ( charval >= 'A' ) {
        !            46:                charval = ( charval - 'A' + 10 );
        !            47:        } else if ( charval <= '9' ) {
        !            48:                charval = ( charval - '0' );
        !            49:        }
        !            50: 
        !            51:        return charval;
        !            52: }
        !            53: 
        !            54: extern unsigned long strtoul ( const char *p, char **endp, int base );
        !            55: extern unsigned long long strtoull ( const char *p, char **endp, int base );
        !            56: 
        !            57: 
        !            58: /*****************************************************************************
        !            59:  *
        !            60:  * Memory allocation
        !            61:  *
        !            62:  ****************************************************************************
        !            63:  */
        !            64: 
        !            65: extern void * __malloc malloc ( size_t size );
        !            66: extern void * realloc ( void *old_ptr, size_t new_size );
        !            67: extern void free ( void *ptr );
        !            68: extern void * __malloc zalloc ( size_t len );
        !            69: 
        !            70: /**
        !            71:  * Allocate cleared memory
        !            72:  *
        !            73:  * @v nmemb            Number of members
        !            74:  * @v size             Size of each member
        !            75:  * @ret ptr            Allocated memory
        !            76:  *
        !            77:  * Allocate memory as per malloc(), and zero it.
        !            78:  *
        !            79:  * This is implemented as a static inline, with the body of the
        !            80:  * function in zalloc(), since in most cases @c nmemb will be 1 and
        !            81:  * doing the multiply is just wasteful.
        !            82:  */
        !            83: static inline void * __malloc calloc ( size_t nmemb, size_t size ) {
        !            84:        return zalloc ( nmemb * size );
        !            85: }
        !            86: 
        !            87: /*****************************************************************************
        !            88:  *
        !            89:  * Random number generation
        !            90:  *
        !            91:  ****************************************************************************
        !            92:  */
        !            93: 
        !            94: extern long int random ( void );
        !            95: extern void srandom ( unsigned int seed );
        !            96: 
        !            97: static inline int rand ( void ) {
        !            98:        return random();
        !            99: }
        !           100: 
        !           101: static inline void srand ( unsigned int seed ) {
        !           102:        srandom ( seed );
        !           103: }
        !           104: 
        !           105: /*****************************************************************************
        !           106:  *
        !           107:  * Miscellaneous
        !           108:  *
        !           109:  ****************************************************************************
        !           110:  */
        !           111: 
        !           112: extern int system ( const char *command );
        !           113: extern __asmcall int main ( void );
        !           114: 
        !           115: #endif /* STDLIB_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.